我有三个共享相同数据库的项目,最好的方法是在所有数据库中使用EF吗?

15 project-planning entity-framework

我有三个项目(WCF项目,而不是客户端),我有一个数据库,现在我将如何使用EF?我应该创建第四个项目,它将具有db上下文和实体,然后在所有三个项目中添加对它的引用?或者我应该为每个项目设置一个单独的上下文,只需添加每个项目所需的表格?有些桌子到处都是用的.那么什么是最好的解决方案呢?

另一个问题:我应该在单独的项目中公开EF db上下文,以便其他项目可以访问它吗?就像是:

 MySeparateProject myPr = new MySeparateProject();
 using (var db = new myPr.DBContext())
 {
     // do stuff with entities
     db.SaveChanges();
 }
Run Code Online (Sandbox Code Playgroud)

Myk*_*lis 20

我认为最干净的事情是创建一个只包含模型和数据库上下文的数据访问项目(类库),并引用来自所有其他项目的项目.

有些人会说你应该只使用模型创建一个类库,然后让另一个具有DbContext,并拥有存储库类,然后......我觉得这对大多数项目来说都是过度的.将模型和上下文放在一个地方只是让所有依赖项目在数据访问时始终保持同步非常容易.

这是我的典型项目结构:

在此输入图像描述

在这里,Squelch.Data包含我的所有模型和db上下文,Squelch.Core包含核心业务逻辑,而我的两个"应用程序"(Squelch.Portal ad CdrImport),以及各种测试用例,都引用了这些基类库.