在Linq to Sql中为EntityRef ID字段赋值时,EntityRef是否仍会延迟加载?

时间:2010-07-28 20:20:46

标签: asp.net linq-to-sql

我有一个使用Linq to Sql进行数据访问的ASP.NET MVC应用程序。

假设我有两个对象:一个Order对象,它具有CustomerID对Customer对象的外键。因此,在我的Order类中,您将看到两个属性:一个int CustomerID字段,以及一个Customer属性可访问的EntityRef成员。

当编辑或提交订单时,我的MVC应用程序将直接更新Order类的CustomerID字段,而不是更新Customer属性。这使我们不必获取客户记录,只要提交的表单请求具有customerID条目,我就可以使用默认的模型绑定代码自动填充属性。

然而,这在以后的代码的其他部分 - 比如业务规则部分 - 一些逻辑将访问Order对象的Customer属性时可以正常工作。例如:

if (order.Customer.HasPreviousOrders) then ...

即使设置了CustomerID字段,Customer字段也为null,因此该业务规则会引发异常。

我知道Linq 2 Sql使用EntityRefs进行延迟加载。我的问题是:如果ID字段已被修改,有没有办法触发对象的EntityRef的延迟加载?

我们有一个动态规则引擎,因此我无法控制需要哪些外键对象。我宁愿不必通过我的所有控制器来设置EntityRef<>值直接。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,没有接受者。看起来我正在尝试做的只是不可行 - 或者可能不是一个好主意。

我继续实施代码,因此我设置了关联对象属性而不是ID属性,因此可以处理业务规则。