【发布时间】:2014-11-17 05:39:48
【问题描述】:
我是ASP.NET MVC5的初学者。
我的项目解决方案具有ASP.NET MVC5 Pro中描述的结构:
Solution
-Project.Domain --- C# Class Library
-Project.WebUI --- Empty ASP.Net MVC Project Template
-Project.UnitTests
我想在其中使用ASP Identity 2.0。
在 Project.Domain 中,我有 Concrete(上下文,它们的初始化程序)和 Entities(数据模型)文件夹。
我按照here 的描述安装了Identity 2.0 Samples。
我将IdentityModels.cs文件拆分为ApplicationDbContext.cs和ApplicationUser.cs,分别放在Concrete和Entities文件夹中。
同样在Concrete 文件夹中我有EFDbContext.cs - 与ApplicationDbContext 上下文分开(它们使用相同的数据库连接)。
我想将AppicationDbInitializer 类(来自Project.WebUI\App_Start\IdentityConfig.cs)存储在Project.Domain 中,因为ApplicationDbContext 包含设置ApplicationDbInitializer 的静态构造函数,但后来发现Project.Domain和Project.WebUI 有循环依赖,所以我决定不移动它并在Global.asax.cs 中从Project.WebUI 设置数据库初始化程序。
然后问题开始了。由于某些原因,方法 ApplicationDbInitializer.Seed 不起作用并且 role "Admin" 未创建。
然后我决定尝试启用迁移。我在Project.Domain 中启用了迁移(如here 所述),为了实现Seed,我需要从IdentityConfig.cs (ApplicationUserManager and ApplicationRoleManager) 访问来自Project.WebUI 的类。不幸的是,它又会造成循环依赖。
我的问题是该怎么做:
如何正确划分项目的解决方案并找到Identity 2.0 文件?
为什么ApplicationDbInitilizer 中的Seed 方法不起作用?
【问题讨论】:
标签: c# asp.net-mvc-5 migration asp.net-identity projects-and-solutions