0

Я использую EF CTP 5 Code First. Если вы спросите EF для создания базы данных для модели, как это создаст соответствующий внешний ключ отношения для вас:Как избавиться от свойства внешнего ключа в EF?

public class Parent 
{ 
    public ICollection<Child> MyChildren { get; set; } 
} 

public class Child 
{ 
    public Parent MyParent { get; set; } 
} 

Детский стол собирается иметь что-то вроде поля MyParent_Id в результате такого поколения. Теперь у меня возникла обратная проблема - у меня есть схема Db, для которой я должен построить аналогичную простую модель. Подобным простым я имею в виду без каких-либо явных свойств внешнего ключа. Есть ли способ сделать это?

Единственный способ сделать сопоставление, которое я нашел, выглядит так, но это подразумевает наличие публичного свойства MyParentId в модели, которую я пытаюсь избежать. Итак, как этого избежать?

public class Child 
{ 
    [Column("ParentID")] 
    public int MyParentId { get; set; } 

    [ForeignKey("MyParentId")] 
    public Parent MyParent { get; set; } 
} 

Заранее спасибо

+1

3 версии были выпущены с CTP5, поэтому вы должны немедленно перейти на [Entity Framework 4.1 Update 1] (http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=26825) –

+0

Ladislav, Хорошие новости. Я сделаю обновление. Спасибо за эту информацию – YMC

ответ

2

Один из способов определить ваше отображение в коде, а не с помощью атрибутов. В вашем «контекст» класса (тот, который вытекает из DbContext):

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    base.OnModelCreating(modelBuilder); 

    modelBuilder.Entity<Child>() 
     .HasRequired(c => c.MyParent) 
     .WithMany() 
     .Map(c => c.MapKey("MyParent_Id")); 
} 

В этом случае, «MyParent_Id» это имя столбца в таблице ребенка, а не название какого-либо имущества на Child класса ,

+0

Это работает! Я думал, что атрибуты могут делать то же самое, но выглядит так, как быстрая конфигурация EF - единственный способ правильно установить отношения. Благодарю. – YMC

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

  • Нет связанных вопросов^_^