【发布时间】:2012-01-09 05:50:43
【问题描述】:
在过去的几天里,我一直在阅读有关实体框架的内容,并设法对使用它有了一个大致的了解,但我仍然有几个问题,其中一些问题可能看起来有点太基本了。从角度来看,我在 asp.net Web 应用程序中使用实体框架 4.0。如果您能回答任何问题,请继续。
使用 POCO 模板有什么好处。我知道,如果我希望获得持久性无知并让我的实体远离与存储 POCO 实体相关的任何信息,那么我的方法就是走。我也可以在使用 POCO 实体时相对轻松地从实体框架切换到 NHibernate?除了松散耦合之外,我还有任何重要的理由转向 POCO 实体。此外,如果我确实使用 POCO,我最终会失去任何东西。在代理的帮助下,我仍然可以进行更改跟踪和延迟加载吗?
将 EF 模型的实体用作数据传输对象或业务对象是正常的做法吗?例如,我的实体模型有一个单独的类库。假设我正在使用 MVP ,我想要一个公司中的员工列表。演示者将请求我的业务逻辑函数,该函数将查询实体模型以获取员工列表并将实体列表返回给演示者。在这种情况下,我的演示者需要参考 EF 模型。这是正确的方法吗?就我的 asp.net web applciation 而言,这应该不是问题,但如果我使用的是 web 服务,它是如何工作的?这是去 POCO 实体的原因吗?
假设 Employee 实体具有指向公司表的导航属性。如果我在“使用”块中使用和包装数据上下文,并尝试访问 BL 中的导航属性,我假设我会遇到异常。如果我关闭延迟加载并使用“包含”linq 查询来获取实体,我是否也会遇到异常?在上一篇文章中,有人建议我为每个请求使用一个上下文,这意味着即使我在 BL 中,该上下文仍保持活动状态。我假设如果我希望保留我所做的任何更改,我仍然需要分离对象并将其附加到我的下一个请求的上下文中?或者我应该使用新的上下文再次查询对象并更新它?
这个问题更多地与组织文件/最佳实践有关,是我之前发布的问题的后续。当我使用基于实体的单独文件来组织我的数据访问层时,组织涉及多个表之间连接的查询的最佳实践是什么。我对组织仍然有些模糊。曾尝试在线搜索,但没有太多帮助。
【问题讨论】:
标签: asp.net entity-framework-4 poco