2012-05-27 35 views
3

我有一些模型,我想要有一個「一個零或一個」關聯。 我搜索並試圖使用Fluent API進行關聯。 這裏是我的課:實體框架:流利的API使重複的外鍵在一個到零或一個

public partial class Bill 
{ 

[Key] 
public int Id { get; set; } 
[Required] 
public double Amount { get; set; } 

public virtual DomainRegOrder DomainRegOrder { get; set; } 

} 

public partial class DomainRegOrder 
{ 
[Key] 
public int Id { get; set; } 
[Required] 
public string DomainName { get; set; } 

public virtual Bill Bill { get; set; } 
} 

,並在我的DataContext類:

public class DataContext : DbContext { 

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 

modelBuilder.Entity<DomainRegOrder>() 
.HasOptional(x => x.Bill) 
.WithOptionalDependent(); 

} 

但是當我初始化數據庫,在票據表,我將有兩個 列命名爲「DomainRegOrder_Id「和」DomainRegOrder_Id1「。

我試圖在比爾實體添加DomainRegOrderId波紋管:

public int? DomainRegOrderId { get; set; } 

但會有一個 「DomainRegOrderId」 和 「DomainRegOrder_Id」 上的 「票據」表。

我也改變.WithOptionalDependent().WithOptionalPrincipal() 但據我所知是沒有變化的!

有人能幫我擺脫這些重複的外鍵嗎?

回答

3

我相信你想是這樣的:

modelBuilder.Entity<Bill>() 
    .HasOptional(x => x.DomainRegOrder) 
    .WithOptionalDependent(c => c.Bill).Map(p => p.MapKey("DomainRegOrderID"); 
+2

後,我試過,我得到了錯誤0019:在類型每個屬性名稱必須是唯一的。屬性名稱'____'已經定義。 MapKey似乎想要創建自己的密鑰。 –

相關問題