Entity framework 4 业务实体,数据访问层-循环参考

Entity framework 4 业务实体,数据访问层-循环参考,entity-framework-4,data-access-layer,circular-reference,Entity Framework 4,Data Access Layer,Circular Reference,我是EF4新手,正在尽我所能遵循指导,所以我选择了POCO路线,并将POCO类放在了自己的项目中。我在DataAccess项目中添加了存储库类,DataAccess项目引用了POCO项目 我目前正在向POCO类添加业务功能,遇到了一个障碍,其中一个POCO对象上的特定方法创建了一组其他POCO对象,这很酷。但是,它创建的POCO对象已经在数据库中,所以我需要我的BusinessEntity项目来引用DataAccess项目,这当然是在创建循环引用 希望我没有误解您的问题,但听起来您可能想使用DT

我是EF4新手,正在尽我所能遵循指导,所以我选择了POCO路线,并将POCO类放在了自己的项目中。我在DataAccess项目中添加了存储库类,DataAccess项目引用了POCO项目

我目前正在向POCO类添加业务功能,遇到了一个障碍,其中一个POCO对象上的特定方法创建了一组其他POCO对象,这很酷。但是,它创建的POCO对象已经在数据库中,所以我需要我的BusinessEntity项目来引用DataAccess项目,这当然是在创建循环引用


希望我没有误解您的问题,但听起来您可能想使用DTO(数据传输对象)类型的路由。我本人是EF新手,但目前正在从事EF、WCF和WinForms项目。我有我的WCF服务的合同对象,我使用它将数据发送回客户端。我将属性从EF实体映射到业务层中的DTO对象。我使用DTO是因为我的客户机不需要EF实体的所有属性。我发现了一些关于项目结构的非常好的东西。希望这有帮助。

您能提供“创建一组其他POCO对象”的方法吗?这不应该发生。POCO方法应该是特定于域/业务的-与数据无关。如果你开始处理数据,它们就不再是POCO的了,所以我有一个“共享”对象,就像在安全性中一样。我已经实现了一个“Split”方法,它添加了一个新的POCO“Event”对象来共享。Events事件的类型是DB中的一个现有记录,它正在检索这个EventType,我需要调用DAL。@BenBuckland-你不应该在那里有那个代码。DAL/存储库应设置该属性。由于您使用的是EF4,因此您可以在获取共享时“急切加载”事件:例如
var share=ctx.Shares.Include(“事件”)
,EF将自动填充事件。@RPM1984-一旦我添加了事件,我可以确定返回它,但是新事件和关联的现有EventType对象的创建情况如何?如果您引用的是“新”事件(例如不在数据库集中),则创建该事件的任何内容都应该设置共享。POCO不应该意识到他们自己。如果您有创建事件的网页,则在提交表单时,服务器应创建事件对象,并通过DAL共享和监视该对象。