繁体   English   中英

带有IdentityDbContext的EF6多对多无效列名

[英]EF6 with IdentityDbContext many to many invalid column name

我有一个IdentityDbContext,其中ApplicationUser:IdentityUser有一个双重自引用表,用于在不同成员之间映射FriendShip:

public class ApplicationUser : IdentityUser
{
    public virtual ICollection<ApplicationUser> Friends { get; set; }
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<ApplicationUser>().HasMany(x => x.Friends).WithMany();

        //I've tried the commented out section with no success
        //modelBuilder.Entity<ApplicationUser()
        //.HasMany(x=>x.Friends).WithMany().Map(x=>
        //{ 
        //    x.MapLeftKey("Friend1"); 
        //    x.MapRightKey("Friend2"); 
        //    x.ToTable("Friendship"); 
        //});
        base.OnModelCreating(modelBuilder);
    }

然后尝试将新用户添加到数据库:

 void AddUser()
    {
        var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>());
        var user = new ApplicationUser { UserName = "HelloWorld" };
        manager.Create(user, "password1");
    }

这将引发EntityCommandExecutionException:“无效的列名'ApplicationUser_Id'。” 如果我放弃多对多关系,那么所有这些都可以,但是在项目中拥有这种关系会很好。

列名是新关系表的默认名称,另一个是ApplicationUser_Id1,我认为更改列名可能会有所帮助,但行不通(注释部分)。

同样奇怪的是,该列名称是发生异常的原因,因为将用户插入数据库与该表无关,我在这里迷路了。

任何建议/建议均不胜感激。

我在这里找到答案

因此,您的映射将是:

modelBuilder.Entity<ApplicationUser()
    .HasMany(x=>x.Friends).WithMany();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM