c# - 实体类型 MVC5 EF6 中的用户

标签 c# asp.net entity-framework asp.net-mvc-5 asp.net-identity

我在 MVC5 中创建了一个类,我想要一个内容的主要所有者,然后我想要一些内容的编辑者:

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; }
}

在数据库上下文中,我有以下代码:

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();
}

我希望 Microsoft 以这种方式实现 IdentityUser 对象,它可以在其他实体类型中使用,所以我可能做错了什么,因为当我尝试创建一个Content 实体类型的 Controller ,我收到以下错误:

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 中,如本问题 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 中的用户。

最佳答案

我遇到了同样的问题,我发现我没有打电话

 base.OnModelCreating(modelBuilder);

在我的数据库模型中

关于c# - 实体类型 MVC5 EF6 中的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19913447/

相关文章:

javascript - 将图像从 javascript 发送到 C#

c# - EF Update Many-to-Many in Detached场景

asp.net - Facebook C# SDK : "Invalid signed request" exception when parsing fbsr cookie

c# - 比较 EF Core Linq 查询中的日期时间

c# - 在 C# 中循环访问数据透视字段值的数据透视项

c# - 使用 PhysicalFile 时如何正确捕获 FileNotFoundException

asp.net - ASP.NET 中的国际化如何工作?

c# - 访问被拒绝冒充当前用户访问网络文件夹

c# - 当数据库发生任何变化时,winforms 应用程序中的 Datagridview 会自动更新

c# - EntityFramework StartsWith() 生成的 SQL 包含计划更改 ESCAPE '~'(代字号)