2

据我所知,LINQ to entity 鼓励使用Load()or进行急切加载Include()。但是,我想知道在多层应用程序中应该在哪里进行急切加载?

数据访问层(封装实体实例的存储库类)具有通用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()方法来指示要加载哪些关系,或者只是执行Load()业务逻辑?

4

1 回答 1

0

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

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

请注意,我不必考虑加载 Child。当您投影到不同类型时,LINQ to entity 会为您执行此操作。

于 2009-03-30T13:34:17.567 回答