Asp.net mvc 从另一个项目中的实体类向ApplicationUser添加外键

Asp.net mvc 从另一个项目中的实体类向ApplicationUser添加外键,asp.net-mvc,entity-framework-6,asp.net-mvc-5.2,Asp.net Mvc,Entity Framework 6,Asp.net Mvc 5.2,我目前有一个设置,我的EF6数据库模型位于一个名为实体的项目中。然而,我有另一个名为Infrastructure的项目,它定义了一个从IdentityUser(标准MVC身份验证模块)继承的ApplicationUser类 基础设施项目了解实体,但不了解其他方面。我的web项目只了解基础设施 我要做的是将我在Entities项目中定义的几个类/表中的一些外键引用添加到ApplicationUser。我可以添加一个字段,但它只是一个标准字符串字段,没有外键约束 使用实体框架是否可能做到这一点?我试

我目前有一个设置,我的EF6数据库模型位于一个名为实体的项目中。然而,我有另一个名为Infrastructure的项目,它定义了一个从IdentityUser(标准MVC身份验证模块)继承的ApplicationUser类

基础设施项目了解实体,但不了解其他方面。我的web项目只了解基础设施

我要做的是将我在Entities项目中定义的几个类/表中的一些外键引用添加到ApplicationUser。我可以添加一个字段,但它只是一个标准字符串字段,没有外键约束

使用实体框架是否可能做到这一点?我试过使用流畅的注释,但不知道怎么做

我的迁移和DBContext都在基础设施项目中定义

项目设置为:

Web
|
 Infrastructure
 | 
  Entities

我的web项目不了解Entities项目,因为我在基础设施中有一个中间层,可以为我从实体模型进行映射。

您可以向Entities项目添加冗余的ApplicationUser、DbSet、config等,并在那里设置关系。然后您可以使用如下代码:

var infrastructureUser= await UserManager.FindByIdAsync(User.Identity.GetUserId());
var entityUser = db.Users.Find(infrastructureUser.UserID);
myEntity.UserProfile = entityUser;
db.MyEntity.Add(myEntity);
await db.SaveChangesAsync();
return RedirectToAction("Index");

您也可以查看解耦EF,但这需要大量的工作

干杯。我没想到。这会不会尝试为我刚刚加入的新dummry实体创建一个新的迁移?我不记得是否创建了,但您可以注释掉Up()代码,或者只是执行一个无更改迁移以进行模型匹配:添加迁移CreateUsers–IgnoreChangesHello,我对MVC非常陌生,我正试图将这个解决方案应用到我完全相同的情况。你能详细说明一下如何创建这样的“冗余”类吗?当然。最简单的方法是让应用程序上下文从IdentityDbContext继承。如果将它们分开,则可以添加冗余用户类(或其他类型),并将其映射到AspNetUsers表,然后从应用程序上下文类引用它。您需要添加一个DbSet,并用属性或流畅的代码指示键和字段长度等。你能提供一些伪代码来说明吗?我想我理解了您原始答案中的代码,而且在我的实体项目中似乎会有一个重复的userid表。这是正确的吗?