我有一个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);
}
然后我尝试将新用户添加到db:
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,我认为更改列名可能会有所帮助,但它不起作用(注释掉的部分)。
此奇怪的是,这个列名是导致异常的原因,因为将用户插入数据库与该表无关,我在这里丢失了。
非常感谢任何建议/建议。
答案 0 :(得分:0)