如何创建链接到PK列和另一个的关系

时间:2019-03-27 13:43:24

标签: c# entity-framework

我正在尝试在两个模型之间创建一种关系,其中子级链接到PK ID加上父级中的另一个Id列

Public Class AClass
{
    public int AClassId {get; set; }

    public int UserId { get; set; }
    public User User { get; set; }       

    public ICollection<BClass> LinkedUsers { get; set; }

    public int SubUserId { get; set;}
    public User SubUser{ get; set; }

    public ICollection<BClass> LinkedSubUsers { get; set; }
}

Public Class BClass
{
    public int BClassId {get; set; }

    public int AClassId {get; set; }

    public int UserId { get; set; }

    public AClass AClass { get; set; }

    public ICollection<Rules> Rules { get; set; }
}

因此,只有在AClass具有链接的set UserId或SubUserId的情况下,BClass才能存在。多个AClass可以为同一个用户拥有多个BClass实例

public Aclass a = new Aclass();
a.AClassId = 1;
a.UserId = 1;
a.SubUserId = 2;

//Ok
BClass b1 = new BClass();
b1.AClassId = 1;
b1.UserId = 1;

//Ok
BClass b2 = new BClass();
b2.AClassId = 1;
b2.UserId = 1;

//OK
BClass b3 = new BClass();
b3.AClassId = 1;
b3.UserId = 2;

//Not OK No AClass 1 with UserId 3
BClass b1 = new BClass();
b1.AClassId = 1;
b1.UserId = 3;

我正在使用以下方式创建关系

System.Data.Entity.ModelConfiguration.EntityTypeConfiguration

HasRequired(c => c.AClass).WithMany(i => i.LinkedUsers).HasForeignKey(t => new { t.AClassId, t.UserId } );

但是我得到了错误:

“关系约束中从属角色和主要角色的属性数量必须相同。”

我希望这是可能的,但无法解决如何使用EF创建正确的映射的问题。

0 个答案:

没有答案