我的LinqToSql模型上有一个非常有趣的问题。在我的某些表上,我有对其他表的引用,在LinqToSql中,这由EnitiyRef类表示,当您尝试访问引用表时,LinqToSql将从数据库中加载引用。
在我的开发机上,一切正常(引用已完美加载),但是昨晚我将更改上传到我们的生产服务器,并在尝试访问表上的引用时开始获取NullReferenceExceptions。
样例代码:
var sale = db.Sales.Single(s => s.ID == 1); string username = sale.User.Name; // User is a reference to a User table // LinqToSql will automatically load the // row and access the fields i need.
// On my server the sale.User throws an exception that its null (User) but the user // is definitly in the database (there is even a FK constraint from Sale to User) 起初我以为我的DataContext得到了GC,但我仔细检查了所有内容,但都没有结果(除了可以在我的盒子上使用)。
(服务器和我的盒子上的所有东西都一样,相同的dll,相同的数据库架构等。)(我实际上将整个DBF文件复制到了我的服务器上,因此它的架构完全相同)
问题来源于stack overflow
检查DataContext生存期。这里可能有过时的缓存在工作
例如:
上下文1:ID == 1的销售待售。检查其用户属性,并观察是否为空用户。 上下文2:ID == 1的甩卖。通过添加新用户来修改用户属性。承诺。 上下文1:ID == 1的甩卖。检查其User属性。是的,仍然为null(已缓存!)。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。