gpt4 book ai didi

c# - 带有 IdentityDbContext 的 EF6 多对多无效列名

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:31 26 4
gpt4 key购买 nike

我有一个 IdentityDbContext,其中 ApplicationUser : IdentityUser 有一个双重 self 引用表来映射不同成员之间的 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,我认为更改列名可能会有所帮助,但它没有用(注释掉的部分)。

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

非常感谢任何意见/建议。

最佳答案

我找到了答案 here

因此,您的映射将是:

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

关于c# - 带有 IdentityDbContext 的 EF6 多对多无效列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21663310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com