2012-04-08 3 views
1

Немного нового для EF, поэтому, пожалуйста, несите меня, если ответ на это очевиден. Я делаю учебник, который использует EF, и два DbSets определен следующим образом:Код Entity Framework: DbSets и навигационные свойства

public DbSet<BrokerageAccount> BrokerageAccounts { get; set; } 
    public DbSet<Customer> Customers { get; set; } 

Класс клиента выглядит this-- это ПОКО (некоторый код сократить для краткости):

public class Customer 
{ 
    public Customer() 
    { 
     BrokerageAccounts = new HashSet<BrokerageAccount>(); 
    } 

    // Primitive properties 
    public int Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    // Navigation properties 
    public ICollection<BrokerageAccount> BrokerageAccounts { get; set; } 
} 

}

Класс BrokerageAccount также является POCO, очень похожим по дизайну Заказчику.

Пока все хорошо. Код, о котором я спрашиваю, приведен ниже. В основной программе между Клиентом и БрокерскимАккаунтом есть ассоциация, за которой я не следую. Код звучит так:

public Customer GetCustomer(string custId) 
    { 
     using (var context = DataContext) 
     { 
      return context.Customers 
       .Include("BrokerageAccounts").SingleOrDefault(c => c.CustomerCode == custId); 
     } 
    } 

Я не могу понять, как ассоциация/нарисуй производится между Клиентом и BrokerageAccount. Я не вижу никаких конфигураций или других файлов в проекте VS 2010, который сообщает, что связывает два DbSets, какую колонку внешнего ключа использовать и т. Д.

Возможно, мне не хватает чего-то очевидного или файла сопоставления какого-либо рода , но только потому, что у Клиента есть ICollection of BrokerageAccount вместе с замечанием выше, в котором говорится «Свойства навигации», это не так. В EF, как создаются эти ассоциации?

+1

«только потому, что у Клиента есть ICollection of BrokerageAccount вместе с комментарием выше, в котором говорится« Свойства навигации », это не так». Ну, в комментарии нет, но сама собственность. Код EF Сначала будут искать свойства 'ICollection ' и создать связь с объектом, представленным' T'. –

+0

Приятно познакомиться с Мэттом, спасибо. Есть ли веб-страница, в которой излагаются шаги, которые Code First будет стараться при создании отношений? – larryq

ответ

2

Обычный способ настройки свойств навигации - использовать ModelBuilder. Это дает вам возможность свободно настраивать ассоциации, взглянуть на это для некоторых подробностей о том, как вы это делаете.

http://xhalent.wordpress.com/2011/01/21/configuring-entity-framework-4-codefirst/

Entity Framework будет гадать, что вы имели в виду, если вы не настроить свойства нав вручную, в приведенном выше случае это, вероятно, настроить свои свойства нав, как ожидалось у вас есть только один 1- * взаимоотношения между клиентом и Брокерским агентом, который, как представляется, называется разумно.

Существует также метод атрибутов, который можно использовать для настройки свойств навигации.

+0

Отлично, спасибо большое. – larryq

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