Загружаются ли связанные записи в HashSet или SortedSet? - PullRequest
3 голосов
/ 17 января 2011

Предположим, у нас есть класс POCO для Entity Framework 4:

public class Order
{
    public long Id { get; set; }
    public ISet<OrderItem> OrderItems { get; set; }
}

И этот метод для получения заказа из базы данных:

public Order GetOrder(long orderId)
{
    using (var context = new MyModelEntities())
    {
        return context.Orders.Include("OrderItems").Where(order => order.Id == orderId).FirstOrDefault();
    }
}

Итак, предположим, что мы делаем это:

Order myOrder = GetOrder(1);

Является ли myOrder.OrderItems HashSet или SortedSet?Есть ли способ контролировать это?

1 Ответ

3 голосов
/ 17 января 2011

Хороший вопрос.

Насколько я знаю (а я не знаю ни MSDN / блога / статьи, что это оспаривает / доказывает), навигационное свойство может быть любого типа, если онореализует ICollection<T>.

Оба HashSet<T> и SortedSet<T> реализуют ICollection<T>, так что любой из них будет приемлемым кандидатом.Вы должны быть в состоянии увидеть, какой конкретный класс решен.

Большинство людей используют ICollection<T> / IList<T>.Почему вы хотите объявить свойство как ISet<T>?

Почему бы вам просто не объявить, какой тип вы хотите, вместо интерфейса.

Или вы можете попробовать использовать внедрение зависимостей (For<ISet>().Use<HashSet>()). * * тысяча двадцать-одна

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...