Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 4 实体框架4:在业务对象中封装导航属性_Entity Framework 4_Business Objects - Fatal编程技术网

Entity framework 4 实体框架4:在业务对象中封装导航属性

Entity framework 4 实体框架4:在业务对象中封装导航属性,entity-framework-4,business-objects,Entity Framework 4,Business Objects,我想将所有EF实体封装在业务对象中。 EF实体“投资”将有一个“BoInvestment”业务对象,该对象包含实体内部和所有属性。 对于导航属性,这是一个挑战。 假设我的“投资”有“报告”有一个EntityCollection,它是延迟加载的。 我的业务对象“BoInvestment”需要将此“Reports”作为“BoReports”,因为“Report”也封装在业务对象中。 如果我只返回一个“IList”,这意味着所有报告都会加载到内存中。在实体化之前,EntityCollection只是一

我想将所有EF实体封装在业务对象中。 EF实体“投资”将有一个“BoInvestment”业务对象,该对象包含实体内部和所有属性。 对于导航属性,这是一个挑战。 假设我的“投资”有“报告”有一个EntityCollection,它是延迟加载的。 我的业务对象“BoInvestment”需要将此“Reports”作为“BoReports”,因为“Report”也封装在业务对象中。 如果我只返回一个“IList”,这意味着所有报告都会加载到内存中。在实体化之前,EntityCollection只是一个可查询的对象,我将失去它的EF优势


任何想法:)

想法是直接使用实体作为业务对象,而不是将实体包装到新的对象层中。如果您使用POCO而不是实体对象,它将工作得更好。如果您想继续使用当前的体系结构,请检查
Lazy
-。这可能是在业务对象上实现导航属性的一种方法。

这个想法是直接使用实体作为业务对象,而不是将实体包装到新的对象层中。如果您使用POCO而不是实体对象,它将工作得更好。如果您想继续使用当前的体系结构,请检查
Lazy
-。这可能是在业务对象上实现导航属性的一种方法。

为什么不使用IQueryable?这样,您仍然具有查询组合和延迟加载的优势


另一个想法是利用EF生成的实体对象实际上是可以扩展以包含BO功能的分部类这一事实,为什么不使用IQueryable?这样,您仍然具有查询组合和延迟加载的优势


另一个想法是利用EF生成的实体对象实际上是部分类这一事实,您可以扩展它来包含BO功能

我做了概念证明,可以封装所有内容……但这会非常复杂。因此,我们将直接使用EF实体。我做了一个概念证明,它可以封装所有东西…但这将是一种复杂的方式。因此,我们将直接使用EF实体。