n 分层架构中的实体框架 - 要遵循的最佳实践?

Posted

技术标签:

【中文标题】n 分层架构中的实体框架 - 要遵循的最佳实践?【英文标题】:Entity Framework in a n tiered architecture - Best Practices to follow? 【发布时间】:2010-12-25 02:30:48 【问题描述】:

我一直在阅读 MSDN 文章 http://msdn.microsoft.com/en-us/magazine/cc700340.aspx

但想知道在 asp.net、n 分层应用程序中使用实体框架(.net 框架 3.5 sp1)是否有其他/替代最佳实践。

【问题讨论】:

我认为您的意思是分层架构,而不是分层。对吗? 【参考方案1】:

我认为与实体框架一起使用的常见设计模式是存储库模式,我不会提供链接,因为谷歌搜索会返回比我可以在此处发布的更多信息。它将帮助您将数据访问代码隐藏在允许更轻松的测试和关注点分离的接口后面。

我认为您在最佳实践方面所做的任何选择都将在很大程度上取决于您使用的工具。如果您使用的是标准 ASP.NET,那么我建议您使用链接到的文章中建议的 MVP 模式,以帮助您分离关注点并创建可测试的代码。但是,如果您使用的是 ASP.NET MVC,那么 MVP 就无关紧要了,因为该框架可以帮助您分离您的关注点。多了解您的环境背景可能有助于提出建议。

【讨论】:

一篇关于存储库模式的好文章是这里的代码项目文章:codeproject.com/KB/database/ImplRepositoryPatternEF.aspx【参考方案2】:

值得注意的是,作为 .NET 4 和 EF4 的一部分,这是一个备受关注的领域。

他们现在支持 POCO 以及自我跟踪实体,两者都可以在层和层之间来回发送(包括 WCF 边界)。

请查看this blog entry,了解有关自我跟踪实体的更多信息。

【讨论】:

【参考方案3】:

我喜欢将 UnitOfWork 模式与 DDD 和服务层一起使用。我不会将我的域对象传递给服务层以外的任何层。即使这样,我的域对象也被接口抽象了。服务层使用适配器模式或远程外观模式将 dto 对象传递给其客户端。

【讨论】:

> 不要在层之间传递你的实体你的意思是,不要在层之间传递你的实体吗? 通常我使用接口在域和服务层之间传递,并使用 dtos 在服务和表示层之间传递。无论层级如何,我都会这样做。

以上是关于n 分层架构中的实体框架 - 要遵循的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

实体框架和 ASP.NET 的最佳实践

不使用实体框架的 MVC 架构

云存储架构框架设计 | 最佳实践

Java Web应用的代码分层最佳实践

C# 实体框架 - 优化/最佳实践

数据库设计模型实体关系图n实体与1:m实体的关系 - 最佳实践