代码之家  ›  专栏  ›  技术社区  ›  Linus

将值赋给Linq to SQL中的EntityRef ID字段时,EntityRef是否仍能延迟加载?

  •  1
  • Linus  · 技术社区  · 14 年前

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

    假设我有两个对象:一个订单对象,它有一个客户对象的外键。所以,在我的order类中,您将看到两个属性:一个int customerid字段和一个可由customer属性访问的entityRef成员。

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

    但是,在代码的其他部分(比如业务规则部分)中,有些逻辑将访问order对象的customer属性。例如:

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

    尽管设置了customerid字段,但customer字段为空,因此此业务规则引发异常。

    我知道Linq2 SQL使用EntityRef执行延迟加载。我的问题是:如果id字段已被修改,是否有方法触发对对象的entityRef的延迟加载?

    我们有一个动态规则引擎,所以我无法控制需要什么样的外键对象。我不想通过所有控制器直接设置EntityRef<gt;值。

    谢谢你的帮助。

    1 回复  |  直到 14 年前
        1
  •  0
  •   Linus    14 年前

    好的,不接电话。看起来我想做的只是不可行——或者可能不是个好主意。

    我继续执行并实现了代码,因此我正在设置关联对象属性而不是ID属性,以便可以处理业务规则。