6

我有一个使用三层体系结构的ASP.net(C#)项目。我开始在我的DAL中使用实体框架,问题是实体框架生成的类可以在业务逻辑层中使用到什么程度?在业务逻辑层中使用实体框架生成的类

这是一个好主意,直​​接使用它们,或者我应该创建自己的业务对象,并从实体框架(db-> O/RM-> BOs)映射到他们?

回答

5

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

决定以较高的开发成本获得此收益取决于企业愿意承担的风险的大小。我建议你与项目专员进行协商,并以最佳判断力以技术方式解释他们的战略目标。

+2

EF生成的类被设计为可扩展并用作业务对象。如果你不喜欢它,你应该改变orm或仅仅等待EF4的代码。添加额外的对象只是感觉不对。首先是数据库,然后是ORM类,然后是BO,然后查看模型。似乎很多。 – LukLed 2009-11-25 23:21:03

2

将生成的类用作Business Objects应该足够合理。生成的类是不完整的,所以你可以很容易地扩展它们。有时候我觉得使用接口是一个更好的选择。

1

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