实体框架模型是否可重用?

时间:2013-09-16 19:44:14

标签: c# entity-framework

使用EF的结果有多重用?

目前,我使用stored procedures进行100%的数据访问。我可能希望为我的最新项目做不同的事情的主要原因是可维护性:向表中添加属性意味着手动更改许多存储过程。如果我正确理解EF,我应该能够在EF模型中向实体添加属性,然后让EF为我更新我的CRUD方法。真棒。

然而,有一件事阻碍了我:可重用性。我喜欢我可以为一个给定的数据库创建一次SP,并完成它们;我可以制作12个全部使用该数据库的应用程序,并且获取该数据就像调用正确的SP一样简单。

  • 如果我转向更加以EF为中心的方法,情况会是如此吗?

  • 我可以导入现有的EF数据模型并使其工作没有太多麻烦吗?

  • 我可以这样做,以便我改变数据模型一次,并且所有应用程序都能感受到这种变化吗?

3 个答案:

答案 0 :(得分:2)

的Ad1。如果您遵循存储库模式,则可以轻松地重用复杂的EF查询。存储库是您封装数据访问的地方,是的,存储库可以在不同的模块/应用程序之间轻松重用。

(并非你不能在没有存储库的情况下重用代码!存储库只是为数据访问层执行它的常用方法)

Ad2的。我不确定你的意思是“导入现有的EF模型”(导入在哪里?)但通常EF模型很简单,可以重复使用

Ad3的。只需将模型放在单独的组件中即可。

答案 1 :(得分:1)

使用EF的一个真正好处是从存储过程中获取远离。 使用存储过程进行所有数据访问时存在的问题是,您被迫将业务逻辑放入数据层

结帐Should the data access layer contain business logic?虽然在每种情况下都不是这样,但通常将业务逻辑保留在业务层中可以让您更好地分离关注点。

我有一个EF项目,我将其用作多个应用程序的数据层。这允许我改变它一次并让所有其他项目获得好处。当然,有时需要在这些其他项目中更改支持代码,但是在存储过程模型中也存在同样的问题。

答案 2 :(得分:0)

任何N层设计都可以通过简单地创建一个类(在类库中)来解决这个问题,该类了解如何使用实体框架访问数据。然后,任何想要访问数据的应用程序都使用类库,在app.config或web.config中配置连接字符串,就完成了。