2011-02-08 36 views
6

我有以下兩個表:代碼優先參考一個一對多

定位研究

Id      int 
Text     string 

DINER

Id      int 
Name     string 
Description   string 
Name_LocalizationID int 
Description_LocationID int 

現在,我想我的POCO這樣的:

public class Diner{ 
    public int Id{get;set;} 
    public ICollection<Localization> NameLocalization{get;set;} 
    public ICollection<Localization> DescriptionLocalization{get;set;} 
} 

public class Localization{ 
    public int Id{get;set;} 
    public string Text{get;set;} 
} 

問題是:我們如何繪製Nam使用EF Fluent API將eLocalization和DescriptionLocalization屬性添加到本地化ID? 感謝

回答

3

SQL Server不支持多級聯刪除,所以你需要讓你聯想之一可選爲了從您的對象模型中派生SQL Server架構:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Diner>() 
     .HasRequired(diner => diner.NameLocalization) 
     .WithMany() 
     .IsIndependent() 
     .Map(s => 
     { 
      s.MapKey(localization => localization.Id, "NameLocalizationID"); 
     }); 

    modelBuilder.Entity<Diner>() 
     .HasOptional(diner => diner.DescriptionLocalization) 
     .WithMany() 
     .IsIndependent() 
     .Map(s => 
     { 
      s.MapKey(localization => localization.Id, "DescriptionLocationID"); 
     }); 
} 
0

我沒有測試此代碼,我很害怕,但也許是這樣的:

modelBuilder.Entity<Diner>() 
    .HasRequired(diner => diner.NameLocalization) 
    .WithMany().IsIndependent() 
    .Map(s => { s.MapKey(localization => localization.Id, "Name_LocalizationID"); }); 

modelBuilder.Entity<Diner>() 
    .HasRequired(diner => diner.DescriptionLocalization) 
    .WithMany().IsIndependent() 
    .Map(s => { s.MapKey(localization => localization.Id, "Description_LocationID"); }); 
+0

對不起,我給了錯誤的Diner導航。當我運行上面的代碼時,它返回了很多記錄,所以我認爲我需要更改一個:一對一:許多映射。 所以我的Diner類看起來是這樣的: public class Diner {public int Id {get; set;} public ICollection NameLocalization {get; set;} public ICollection DescriptionLocalization {get; set; } } 你能告訴我如何使用Fluent或Data Annotation來映射這個嗎? – sadhat75 2011-02-09 15:57:42

相關問題