2014-10-08 47 views
0

你好我有一個以下問題,我正在嘗試使用Fluent API來解決。流利的API - 一對多 - 多重關係

我有2個表:

產品: ID INT |代碼nvarchar(20)| CurrentDetailsID int

ProductDetails ID int | ProductID int |名稱navrachar(50)....

現在我的關係有點奇怪,因爲: 產品只能包含一個當前產品詳細信息(CurrentDetailsID),​​每個詳細信息記錄只能鏈接到一個產品,但產品本身可以包含多個細節(出於歷史原因)。

任何想法如何在流利的API中歸檔這種棘手的關係類型?

勒布

+0

是否可以將IsCurrent位字段添加到ProductDetails表並完全刪除CurrentDetailsID? – MikeG 2014-10-08 22:53:47

回答

0

定義你的類如下:

public class Product 
{ 
    public int Id { get; set; } 
    public string Code { get; set; } 
    public int CurrentProductDetailId { get; set; } 
    public virtual ProductDetail CurrentProductDetail { get; set; } 
    public virtual ICollection<ProductDetail> ProductDetails { get; set; } 
} 
public class ProductDetail 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int ProductId { get; set; } 
    public virtual Product Product { get; set; } 
} 

如果你想用流利的API,你可以使用下面的代碼

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Product>() 
       .HasMany(t => t.ProductDetails) 
       .WithRequired(t=>t.Product) 
       .HasForeignKey(t => t.ProductId); 
    modelBuilder.Entity<Product>() 
       .HasRequired(t => t.CurrentProductDetail) 
       .WithRequiredPrincipal() 
       .Map(m => m.MapKey("CurrentProductDetailId")); 
} 

這是結果:

enter image description here

+0

但如何使用流利的API存檔? – SebSky 2014-10-09 17:51:45

+0

@SebSky:我更新了答案。 – Masoud 2014-10-09 18:10:36

+0

由於某種原因,這沒有奏效。我確實有一個錯誤,說不允許多重性:'( – SebSky 2014-10-09 20:04:50

相關問題