实体类型 MVC5 EF6 中的用户 [英] User in Entity type MVC5 EF6
问题描述
我在 MVC5 中创建了一个类,我想要内容的主要所有者,然后我想要一些内容编辑器:
I have created a class in MVC5, where I want a primary owner of the content and then I want to have some editors for the content:
public class Content
{
public int ID { get; set; }
public IdentityUser Owner { get; set; }
public ICollection<IdentityUser> Editors { get; set; }
public string Title{ get; set; }
public string Body { get; set; }
}
在数据库上下文中,我有以下代码:
In the database context I have the following code:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Content>()
.HasOptional(c => c.Editors)
.WithRequired()
.WillCascadeOnDelete();
modelBuilder.Entity<Content>()
.HasRequired(c => c.Owner)
.WithOptional()
.WillCascadeOnDelete();
}
我希望微软以这种方式实现 IdentityUser
对象,它可以在其他实体类型中使用,所以我可能做错了什么,因为当我尝试制作一个内容实体类型的控制器,我收到以下错误:
I would expect Microsoft to have implemented the IdentityUser
object in such a way, that it can be used in other entity types, so I am probably doing something wrong, because when I try to make a controller for the Content entity type, I get the following error:
EntityType 'IdentityUserLogin' has no key defined
EntityType 'IdentityUserRole' has no key defined
EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no key defined
EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no key defined
我还尝试将以下代码添加到 ApplicationDbContext
中,如本问题中所述在 asp.net MVC5 EF6 中使用 fluent api 映射表?:
I have also tried to add the following code to the ApplicationDbContext
as described in this question Map tables using fluent api in asp.net MVC5 EF6?:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}
我一定是做错了什么.请告诉我如何处理我的 Content EntityType 中的用户.
I must be doing something wrong. Please tell me how I can handle users in my Content EntityType.
推荐答案
以下方法 OnModelCreating
将创建一个工作上下文.不确定它是否是您想要的映射.
The following method, OnModelCreating
, will create a working context. Not sure if it is the mapping you want though.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Content>()
.HasMany(c => c.Editors)
.WithOptional()
.WillCascadeOnDelete(false);
modelBuilder.Entity<Content>()
.HasRequired(c => c.Owner)
.WithOptional()
.WillCascadeOnDelete(false);
modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId);
modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id);
modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId });
}
这篇关于实体类型 MVC5 EF6 中的用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!