在业务逻辑层中使用Entity Framework生成的类

时间:2009-11-25 20:13:06

标签: c# entity-framework business-objects business-logic-layer

我有一个使用三层架构的ASP.net(C#)项目。我开始在我的DAL中使用Entity Framework,问题是Entity Framework生成的类在业务逻辑层中可以使用的程度是多少?

最好直接使用它们,还是应该创建自己的业务对象并从Entity Framework(db-> O / RM-> BOs)映射到它们?

4 个答案:

答案 0 :(得分:5)

在我看来,EF对象将映射到你的对象。这具有较高的开发成本,但具有持久性无知和解耦的额外好处。如果业务需要切换到不同的持久性解决方案,那么从长远来看,这种分离可以转化为显着的敏捷性和实际的世界节省。如果没有解耦,EF对象可以深深嵌入BLL甚至表示层,需要进行大量重构。在这种情况下,企业甚至可能不会考虑切换持久性解决方案,这可能会导致业务竞争力下降。

以更高的开发成本获得此收益的决定取决于企业愿意承担的风险程度。我建议你咨询项目专员,并用最好的判断力以技术方式解释他们的战略目标。

答案 1 :(得分:2)

将生成的类用作Business Objects应该足够合理。生成的类是部分的,因此您可以根据需要轻松扩展它们。有时我发现使用接口是一个更好的选择。

答案 2 :(得分:1)

我刚刚开始使用EF 2.0(在.Net 4.0 beta 2中),它可以使用POCO clases作为EF实体。即你现在可以在EF 2中使用持久性无知类。
我认为这还没有完全准备好,因为我无法在Visual Studio 2010测试版2中使用PDC 2009的演示文稿,但请注意ADO.Net team blog

答案 3 :(得分:0)

您可能需要查看Persistence Ignorance (POCO) Adapter for Entity Framework。这是EF团队成员的一个开源项目,它为EF 1.0带来了POCO支持。 EF 4.0将提供开箱即用的POCO支持,但该项目可作为一种权宜之计,直到2010年.NET 4.0下降。