2013-04-24 2 views
0

Как построить эти таблицы для EF?EF many-to-many

Первая таблица:

public class model1 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

Вторая таблица:

public class model2 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

Таблица, которая имеет связь первого и второго и несколько полей:

public class model3 
{ 
    public int (id from model1){ get; set; } 
    public int (id from model2) { get; set; } 
    public int (id from model2){ get; set; } 
    public decimal Name{ get; set; } 
    public decimal Description{ get; set; } 
} 

ответ

0

Я думаю, что это может сделать трюк (предоставить структуру таблицы, которую вы описали)

public class model3 
{ 
    public virtual model1 Model1 { get; set; } 
    public virtual model2 Model2 { get; set; } 
    public virtual model2 SecondModel2 { get; set; } 

    // if you want the ID fields explicitly, 
    // EF will map the keys by property name, 
    // optionaly you can use the ForeignKeyAttribute 
    public int Model1Id { get; set; } 
    public int Model2Id { get; set; } 
    public int SecondModel2Id { get; set; } 


    public decimal Name{ get; set; } 
    public decimal Description{ get; set; } 
} 

Но вы можете пересмотреть структуру - тот, который вы представили выглядит немного подозрительный - model1 и model2 имеет то же поле, так что, возможно, они не должны быть определены как отдельные классы. Класс model3 также имеет некоторые общие поля, поэтому, возможно, стоит извлечь их в общий класс - EF обрабатывает наследование.

Чтобы получить многие ко многим отношения, хотя, вам нужно что-то вроде этого:

public class Foo 
{ 
    public int Id {get;set;} 
    public virtual ICollection<Bar> Bars {get;set;} 
} 

public class Bar 
{ 
    public int Id {get;set;} 
    public virtual ICollection<Foo> Foos {get;set;} 
} 

это создаст Foo таблицу, таблицу бар и FooBars (или BarFoos) associacion таблицы.

+0

ok, и to model1 и model2 я должен добавить публичный виртуальный ICollection Model3s {get; задавать; }? – user1600070

+0

мой контекст общественный DbSet model1s {get; задавать; } public DbSet model2s {get; задавать; } общественный DbSet model3s {get; задавать; } от того, как я могу получить что-то вроде context.model1s. (и Name of SecondModel2Id) – user1600070

+0

взгляните на это http://vincentlauzon.wordpress.com/2011/04/15/entity-framework-4-1-many-to-many-relationships-5/. Отношение «многие ко многим» подробно объясняется там – Chris

Смежные вопросы