Работаете напрямую с EntitySet?
Я пытаюсь обернуть голову вокруг всех классов, присутствующих в Entity Framework 4. Единственный, который меня (пока) смущает - это EntitySet. EntitySets никогда не упоминаются нигде в сгенерированном коде C# из моих файлов.edmx, только в файлах XML (.csdl, .msl, .ssdl).
Кажется, что ObjectSet является оболочкой для EntitySet (хотя он также представляет EntitySet как открытое свойство.) Есть ли случаи, когда я буду напрямую работать с EntitySets?
1 ответ
Из MSDN:
Логический контейнер для сущностей данного типа и его подтипов. Наборы сущностей сопоставляются с таблицами в базе данных.
По сути, речь идет о CSDL - о том, какому "набору" объектов соответствуют объекты.
Вам не нужно беспокоиться об этом - вы будете работать с ObjectSet<T>
:
var orders = ctx // ObjectContext
.Orders // ObjectSet<Order>
.SingleOrDefault(); // Order
Для получения бонуса - по возможности используйте IObjectSet<T>
чтобы облегчить модульное тестирование (внедрить фиктивное - например, статический список в памяти).