【发布时间】:2011-03-22 09:24:53
【问题描述】:
我有一个使用 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 字段为空,因此该业务规则会引发异常。
我知道 Linq 2 Sql 使用 EntityRefs 来延迟加载。我的问题是:如果 ID 字段已被修改,是否有办法触发对象的 EntityRef 延迟加载?
我们有一个动态规则引擎,所以我无法控制需要哪些外键对象。我宁愿不必通过我所有的控制器来直接设置 EntityRef 值。
感谢您的帮助。
【问题讨论】:
标签: asp.net linq-to-sql