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