我已将ASP.NET MVC 5项目划分为两个不同的项目/程序集:
和
.Entities
包含我的业务/域逻辑(基本上是我的自定义数据对象的模型类),.Web
包含实际的ASP.NET MVC框架和Web基础结构。
我的设计基于Scott Allen的优秀ASP.NET MVC 5基础课程,他解释了如何将业务逻辑与Web基础架构分开。
但是,我遇到了一个问题,斯科特只是简单地解决了这个问题:在我的ApplicationUser
课程中访问.Entities
。
我希望我的数据实体表包含指向每个条目的特定ApplicationUser
的外键。但由于ApplicationUser
继承自IdentityUser
,我需要引用AspNet.Identity.EntityFramework
。
UserStore
或UserManager
才能使用它。
我认为,仅仅想要在几张表中能够使用外键ApplicationUser
,这实在是太过分了。
我可以通过在ApplicationUser
中的IdentityModel
类中创建一个导航属性,将相关的外键列放入我的数据表中,如下所示:
using MyProject.Entities;
public class ApplicationUser : IdentityUser
{
public virtual ICollection<Request> Requests { get; set; }
}
然后执行简单的Entity Framework迁移。但是,我无法通过我的对象显式访问用户。
所以:
为什么会这样?#34;令人反感&#34;在我的业务/域层中引用实体框架,以及
如何将该图层中声明的外键引用转到我需要的ApplicationUser
?