实体框架6使用Identity用户模型的Code First迁移在单独的项目中

时间:2014-10-23 15:21:11

标签: asp.net-mvc-5 entity-framework-6 asp.net-identity-2

是否可以使用EF6 Code First和MVC5将涉及ASP.Identity的所有模型,视图和控制器放入其自己的类库项目中。那么在多个Web应用程序中,您可以使用相同的DLL并且已经拥有所有视图/控制器/模型,并且为多个应用程序使用相同的安全数据库?

我们有几个带有单独数据库的Web应用程序和一个处理所有这些数据库的安全数据库,我们现在还不确定如何保留此模型,因为我们正在转向EF6 Code First和MVC5。 / p>

如果有可能,有人可以指点我的类似教程,或者给我一个基本的步骤大纲?

或者,如果有更好的方法来实现我的目标,有一组代码来处理ASP.NET身份安全性,我可以将该DLL插入多个Web应用程序并获得相同的逻辑和数据库?

或者这一般不是一个好主意吗?

非常乐于接受建议和建议。我很感激。

2 个答案:

答案 0 :(得分:3)

是的。我们对每个项目都这样做。结构非常简单。只需为您的解决方案创建一个类库项目,将EF添加到项目中,然后从主项目中引用类库。

如果使用Code First Migrations,请确保在运行迁移或添加迁移时选择类库项目作为Package Manager控制台中的默认项目。

以下是解决方案的伪解决方案

MySolution
  - MyWebApp
     reference: MyDAL
  -MyDAL
     reference: EF6

我发现这样做的好处是你可以参考" DAL"类库来自配套控制​​台应用程序或Windows窗体应用程序,或配套网站,即使在不同的解决方案中,它们也将使用相同的代码库。

例如:

MySolution
  - MyWebApp
     reference: MyDAL
  - MyDAL
     reference: EF6
  - MyOtherWebApp
     reference: MyDAL

注意:您的数据上下文将在 startup 项目的Web.config或App.config中查找其连接字符串。 类库。起初这可能令人困惑......但是一旦你想到.NET如何将应用程序一起编译到最终的包中,它就有意义了。

答案 1 :(得分:2)

如果您正在讨论为多个项目之间共享的整个数据层创建一个类库,那么这很容易。您可以将所有模型,上下文等移动到类库中,并使用类库项目运行迁移。其他项目只会引用该类库,而不是自己的迁移。

但是,如果您正在谈论多个数据库和关联数据层,其中项目Foo有自己的模型,上下文和迁移以及项目Bar有自己的模型,上下文和迁移,而类库只有{{ 1}}和IdentityUser,事情变得复杂一些。您将无法组合任何这些上下文。因此,在您的Foo项目中,如果需要同时使用两者,则必须为Foo 身份上下文实例化上下文。这本身并不是问题,但需要注意的是。