2016-09-08 110 views
0

如何使兩個表一對多和雙方 例如 我有項目,像表 每張圖片都有項目,每個項目至少有一個需要之間的關係圖像 我使這個 每張圖片都有項目一對多關係的實體框架需要在兩側

public class ImageMap : EntityTypeConfiguration<Image> 
{ 
    public ImageMap() 
    { 
     this.ToTable("ProjectImage"); 
     this.HasKey<int>(i => i.Id); 
     this.Property(i => i.ImagePath).IsRequired().HasMaxLength(2000); 
     this.HasRequired<Project>(i => i.Project).WithMany(p => p.Images) 
      .HasForeignKey(i => i.ProjectId); 
    } 
} 

如何使每個項目都有至少一個圖像或多個??? (實體框架版本6)

+0

如果您無法在SQL中執行此操作,EF將不會有配置選項。 http://dba.stackexchange.com/questions/101048/how-to-enforce-that-one-row-in-a-parent-table-must-be-associated-with-at-least-a –

回答

1

你不能確保一對多關係的「許多」部分中的「至少一個」條件。這不是你可以在db中管理的東西,例如沒有檢查約束(你也可以在你的應用程序中進行驗證來管理它)。

實現這一目標的一種方法可能是創建一對一關係和一對多關係,它們都指向同一個表/實體。

因此,您的項目將有一個MandatoryImage屬性,例如,和一個AlternativeImages(集合)屬性。

1

我認爲這是您的業務邏輯或數據訪問層應該控制的內容,然後再調用SaveChanges方法。據我所知,沒有辦法配置使用Fluent API。所以你可以這樣做:

if(project.Images.Count()>0)// Or project.Images.Any() 
{ 
    context.SaveChanges(); 
}