我一直在這個小時,並嘗試了很多建議,我發現搜索,但沒有運氣。我使用的代碼第一個EF 5.如何將一個代碼第一個對象中的兩個屬性映射到相同的父類型
情況是,我有一個班員工。然後我有另一個有兩個屬性的類,它們都是Employee類型。我希望這些都是外鍵約束,但是這些要求允許來自和來自相同用戶的許多相同請求,所以我不能將它們用作鍵。我真的不在乎員工擁有兩個導航集合,但是在我看來是一個需求的問題上工作。如果它簡化了問題,我可以刪除這些問題。
我收到此消息。 System.Data.Entity.Edm.EdmAssociationEnd :: Multiplicity在關係'Employee_RequestsForEmployee'的關係'Employee_RequestsForEmployee_Target'中無效。因爲「依賴角色」屬性不是關鍵屬性,所以「依賴角色」的多重性的上界必須爲「*」。
我已經嘗試過在上下文的OnModelCreation方法中使用Fluent API;
modelBuilder.Entity() .HasRequired(U => u.ForEmployee) .WithMany() .HasForeignKey(U => u.ForEmployeeId);
modelBuilder.Entity<RevenueTransferRequest>() .HasRequired(u => u.FromEmployee) .WithMany() .HasForeignKey(u => u.FromEmployeeId);
在衝突中的類(我已經刪除了清晰一些性質);
public class Employee : IEmployee
{
[Key]
public string Id { get; set; }
[InverseProperty("ForEmployee")]
public ICollection<RevenueTransferRequest> RequestsForEmployee { get; set; }
[InverseProperty("FromEmployee")]
public ICollection<RevenueTransferRequest> RequestsFromEmployee { get; set; }
}
public class RevenueTransferRequest : IRevenueTransferRequest
{
[Key]
public Guid Id { get; set; }
[Required]
[ForeignKey("ForEmployee")]
public String ForEmployeeId { get; set; }
[InverseProperty("RequestsForEmployee")]
public Employee ForEmployee { get; set; }
[Required]
[ForeignKey("FromEmployee")]
public String FromEmployeeId { get; set; }
[InverseProperty("RequestsFromEmployee")]
public Employee FromEmployee { get; set; }
}
任何幫助將不勝感激。提前致謝。
有趣的問題。從'Employee'派生一個'RevenueTransferRequestFromEmployee'會不會過分?在這裏大聲思索...只需指出,如果它位於名爲'[typename] Id'或'Id'的屬性的頂部,則不需要'[Key]'屬性,因爲實體框架通過找到關鍵字*約定優於配置*。 – 2013-02-14 03:01:54
最後,我刪除了所有InverseProperty和ForiegnKey定義,並將集合從Employee表中取出。它的工作原理和鑰匙在那裏。這讓我在這個項目上前進。我將在業餘時間繼續研究這個問題,當我找到答案時我會回來找解決方案。 – 2013-02-15 15:43:12