Entity framework 我有三个共享同一数据库的项目,在所有项目中使用EF的最佳方式是什么?
我有三个项目(WCF项目,而不是客户端),我有一个数据库,现在我将如何使用EF?我是否应该创建第四个项目,其中包含db上下文和实体,然后在所有三个项目中添加对它的引用?或者我应该为每个项目创建一个单独的上下文,并为每个项目添加所需的表?有些桌子真的到处都用。那么什么是最好的解决方案呢 另一个问题:我是否应该在单独的项目中公开EFDB上下文,以便其他项目可以访问它?比如:Entity framework 我有三个共享同一数据库的项目,在所有项目中使用EF的最佳方式是什么?,entity-framework,project-planning,Entity Framework,Project Planning,我有三个项目(WCF项目,而不是客户端),我有一个数据库,现在我将如何使用EF?我是否应该创建第四个项目,其中包含db上下文和实体,然后在所有三个项目中添加对它的引用?或者我应该为每个项目创建一个单独的上下文,并为每个项目添加所需的表?有些桌子真的到处都用。那么什么是最好的解决方案呢 另一个问题:我是否应该在单独的项目中公开EFDB上下文,以便其他项目可以访问它?比如: MySeparateProject myPr = new MySeparateProject(); using (var
MySeparateProject myPr = new MySeparateProject();
using (var db = new myPr.DBContext())
{
// do stuff with entities
db.SaveChanges();
}
我将创建一个单独的数据访问项目。无论如何,分离数据层是一种很好的做法。根据项目的性质和您想要测试它的方式,您可能想看看类似于存储库模式的东西(尽管关于它的EF值存在争议)
我认为最干净的方法是创建一个数据访问项目(类库),其中只包含模型和数据库上下文,并从所有其他项目中引用它们 有些人会说,您应该创建一个只包含模型的类库,然后创建另一个包含DbContext和repository类的类库,然后。。。。我觉得这对于大多数项目来说都是过分的。将模型和上下文放在一个地方,就可以很容易地在数据访问方面保持所有相关项目的一致同步 以下是我的典型项目结构:
这里,Squelch.Data包含了我所有的模型和数据库上下文,Squelch.Core包含了核心业务逻辑,我的两个“应用程序”(Squelch.PortaladCdrImport)和各种测试用例,都引用了这些基本类库。实际上这是我脑海中的想法,EF和repository模式是一种双重工作……实际上,为了更好地进行调优,而不过度使用它(如果您首先使用数据库,那么在迁移时过度使用它),它将是一个包含contextes和实体模型的DAL,然后是一个供您的BLL使用的模型库一个应用层。数据访问解决方案可以工作吗?然后将其作为git子模块包含在中。