我正在尝试在两个模型之间创建一种关系,其中子级链接到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创建正确的映射的问题。