0

пожалуйста, обратите внимание на следующую Pocos:Точной цели навигационных свойств Entity Framework

public class Country 
{ 
    [Key] 
    public Guid ID { get; set; } 

    [Required] 
    public virtual Currency Currency { get; set; } 
} 

public class Currency1 
{ 
    [Key] 
    public Guid ID { get; set; } 

    public virtual ICollection<Country> Countries { get; set; } 
} 

public class Currency2 
{ 
    [Key] 
    public Guid ID { get; set; } 
} 

Я не совсем уверен, что мне нужно навигационные свойства, как в ICollection в Валюта1 для. Если дело доходит до EF CodeFirst, я не вижу различий в структуре базы данных. Таблицы Currency1 и Currency2 выглядят почти одинаково для меня. Итак, почему и когда имеет смысл добавить это дополнительное свойство?

Конечно, просто думая о POCOs. Я понимаю, что я не могу получить доступ к каким-либо странам из объекта Currency2. Например:

 var a = currency1.Countries; // works fine 
     var b = currency2.Countries; // does not even compile 

Но разве это единственное различие? Другими словами: Если мне не нужно обращаться к странам из объекта Currency2, нет необходимости добавлять соответствующее свойство навигации в класс Currency2 для целей EF? Вид путается здесь ...

ответ

1

Свойства навигации используются либо для прямого доступа (как описано), либо в запросах linq-to-entity. Если вы не планируете использовать его, вы можете удалить его из своей модели. Просто имейте в виду, что you need a navigation property on at least one side, чтобы иметь возможность моделировать реализацию базы данных с использованием первого подхода кода.

+0

Спасибо, Ладислав, это именно то, что я думал. Еще раз спасибо! – Ingmar

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