1
比方说,我们有这个EF代码第1虚拟外键
class A
{
[Key]
public int Id { get; set; }
public string X { get; set; }
public string Y { get; set; }
public B B;
}
class B
{
[Key]
public int Id { get; set; }
public string X { get; set; }
public string Y { get; set; }
public virtual ICollection<A> As { get; set; }
}
假设X和Y的对保证是B中唯一的,因此{X,Y}可能是在B中的复合主键但不是,Id是。
Fluent API可以通过这个假外键关系来表达A.B应该是导航属性吗?
这样的事情,但它不工作:
HasRequired(a => a.B).WithMany(b => b.As).HasForeignKey(a => new { a.X, a.Y })
请注意,A和B的真正主键不是合成的。但是我想通过关联的假组合键不包含Id,只包含X和Y.另外,我仍然需要将B上的Id作为真正的主键。这意味着你的HasKey()不能用于我的情况。我只需要一个名为B的导航属性,它通过假复合键{X,Y}与B相关。 – pinkfloydhomer 2012-08-17 07:08:59