Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 一个模型中的一个1-1关系和两个1-n关系_C#_Sql_Entity_Relationship - Fatal编程技术网

C# 一个模型中的一个1-1关系和两个1-n关系

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

我的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 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);
    }