2011-02-08 1 views
6

У меня есть следующие две таблицы:Code-First Reference один-ко-многим

ЛОКАЛИЗАЦИИ

Id      int 
Text     string 

DINER

Id      int 
Name     string 
Description   string 
Name_LocalizationID int 
Description_LocationID int 

Теперь я хочу, чтобы мой ПОКО так:

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;} 
} 

Вопрос: Как мы можем наметить Нам свойство eLocalization и DescriptionLocalization для идентификатора локализации с API-интерфейсом EF Fluent? Благодаря

ответ

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 { общественного ИНТ Id {получить, установить;} общественное ICollection <Локализация> NameLocalization {получить, установить;} общественности ICollection <Локализация> DescriptionLocalization {получить, установить; } } Не могли бы вы рассказать, как я сопоставляю это с помощью Fluent или Data Annotation? – sadhat75