C# 一个模型中的一个1-1关系和两个1-n关系
我的WerehouseKey课程:C# 一个模型中的一个1-1关系和两个1-n关系,c#,sql,entity,relationship,C#,Sql,Entity,Relationship,我的WerehouseKey课程: public class WerehouseKey { [Key] public int WhKeyID { get; set; } (...) public virtual KeyRent KeyRent { get; set; } [Display(Name = "Magazyn")] public int WhID { get; set; } public virtual Werehouse
public class WerehouseKey
{
[Key]
public int WhKeyID { get; set; }
(...)
public virtual KeyRent KeyRent { get; set; }
[Display(Name = "Magazyn")]
public int WhID { get; set; }
public virtual Werehouse Werehouse { get; set; }
}
用户类别:
public class User
{
[Key]
public int UserID { get; set; }
(...)
public virtual ICollection<KeyRent> RUsers { get; set; }
public virtual ICollection<KeyRent> GUsers { get; set; }
}
我想在1-1中有WerehouseKey和KeyRent之间的关系,它可以完美地工作,然后我想在KeyRent中有两个1-n关系,在它和用户之间。基本上,一个用户租用密钥,一个用户提供密钥,这两个用户都可以租用/提供多个密钥。我有自己的onmodel创建函数:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<KeyRent>()
.HasKey(e => e.WhKeyID);
modelBuilder.Entity<WerehouseKey>()
.HasOptional(s => s.KeyRent)
.WithRequired(ad => ad.WerehouseKey);
modelBuilder.Entity<KeyRent>()
.HasRequired<User>(s => s.RentingUser)
.WithMany(s => s.RUsers)
.HasForeignKey(s => s.RUserID);
modelBuilder.Entity<KeyRent>()
.HasRequired<User>(s => s.GivingUser)
.WithMany(s => s.GUsers)
.HasForeignKey(s => s.GUserID);
modelBuilder.Entity<User>()
.HasMany<KeyRent>(s => s.GUsers)
.WithOptional(s => s.GivingUser)
.HasForeignKey(s => s.GUserID);
modelBuilder.Entity<User>()
.HasMany<KeyRent>(s => s.RUsers)
.WithOptional(s => s.RentingUser)
.HasForeignKey(s => s.RUserID);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasKey(e=>e.WhKeyID);
modelBuilder.Entity()
.has可选(s=>s.KeyRent)
.带必填项(ad=>ad.WerehouseKey);
modelBuilder.Entity()
.has必需(s=>s.RentingUser)
.有许多(s=>s.Ruser)
.HasForeignKey(s=>s.RUserID);
modelBuilder.Entity()
.HasRequired(s=>s.GivingUser)
.有许多(s=>s.guser)
.HasForeignKey(s=>s.GUserID);
modelBuilder.Entity()
.HasMany(s=>s.GUsers)
.with可选(s=>s.GivingUser)
.HasForeignKey(s=>s.GUserID);
modelBuilder.Entity()
.HasMany(s=>s.RUsers)
.with可选(s=>s.RentingUser)
.HasForeignKey(s=>s.RUserID);
}
问题是,当我想添加迁移时,它会显示这个错误
“在类型'WerehouseProject.Models.KeyRent'上声明的导航属性'GivingUser'已配置有冲突的多重性。”
有人能告诉我这里出了什么问题以及如何解决吗
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<KeyRent>()
.HasKey(e => e.WhKeyID);
modelBuilder.Entity<WerehouseKey>()
.HasOptional(s => s.KeyRent)
.WithRequired(ad => ad.WerehouseKey);
modelBuilder.Entity<KeyRent>()
.HasRequired<User>(s => s.RentingUser)
.WithMany(s => s.RUsers)
.HasForeignKey(s => s.RUserID);
modelBuilder.Entity<KeyRent>()
.HasRequired<User>(s => s.GivingUser)
.WithMany(s => s.GUsers)
.HasForeignKey(s => s.GUserID);
modelBuilder.Entity<User>()
.HasMany<KeyRent>(s => s.GUsers)
.WithOptional(s => s.GivingUser)
.HasForeignKey(s => s.GUserID);
modelBuilder.Entity<User>()
.HasMany<KeyRent>(s => s.RUsers)
.WithOptional(s => s.RentingUser)
.HasForeignKey(s => s.RUserID);
}