相关记录是否已加载到HashSet或SortedSet中?

时间:2011-01-17 06:07:37

标签: entity-framework-4

假设我们有实体框架4的POCO类:

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 个答案:

答案 0 :(得分:3)

好问题。

据我所知(并且没有MSDN /博客/文章,我知道这会消除/证明这一点),导航属性可以是任何类型,只要它实现ICollection<T>

HashSet<T>SortedSet<T>都会实现ICollection<T>,因此要么是可行的候选人。

您是否单步执行了代码?您应该能够看到哪个具体类得到了解决。

大多数人使用ICollection<T> / IList<T>。您为什么要将该属性声明为ISet<T>

为什么不直接声明所需的类型,而不是接口。

或者您可以尝试使用依赖注入(For<ISet>().Use<HashSet>())。