渴望加载& LINQ to Entities

时间:2009-03-30 09:56:57

标签: linq-to-entities

到目前为止,LINQ to实体鼓励用Load()Include()加载。但是,我想知道在多层应用程序中应该在哪里进行热切加载?

数据访问层(封装Entity实例的存储库类)具有通用Item GetItem(int id)函数是否正确,并且在业务逻辑层中执行

Item item = dbRepository.GetItem(itemId);
if (!item.itemDetails.IsLoaded)
 item.itemDetails.Load()

或者存储库类是否应该具有不同的显式函数来加载不同的外部关系,因此返回急切加载关系的项?

非常感谢!

修改 示例 - http://www.asp.net/learn/mvc/tutorial-29-cs.aspx

public Contact GetContact(int id)

此函数返回Contact实体类型。但是,取决于业务逻辑需求,我们可能希望Load()Include()实体的不同外部关系。这个要求是否意味着我们需要更多重载的Contact方法,其中的参数指示要加载哪些关系,或者只是在业务逻辑中执行GetContact()

1 个答案:

答案 0 :(得分:0)

在大多数情况下,我不做任何一个。相反,我使用LINQ将我的实体类型映射到表示模型类型。在这种情况下,您根本不必考虑加载。例如:

var presentationModel = (from entity in Repository.Entities
                         select new PresentationEntity ()
                         {
                             Prop = entity.Prop,
                             ChildProp = entity.Child.Prop
                         }).First();

请注意,我没有考虑加载Child。当您投影到其他类型时,LINQ to实体会为您执行此操作。