假设我们有实体框架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?有没有办法控制这个?
答案 0 :(得分:3)
好问题。
据我所知(并且没有MSDN /博客/文章,我知道这会消除/证明这一点),导航属性可以是任何类型,只要它实现ICollection<T>
。
HashSet<T>
和SortedSet<T>
都会实现ICollection<T>
,因此要么是可行的候选人。
您是否单步执行了代码?您应该能够看到哪个具体类得到了解决。
大多数人使用ICollection<T>
/ IList<T>
。您为什么要将该属性声明为ISet<T>
?
为什么不直接声明所需的类型,而不是接口。
或者您可以尝试使用依赖注入(For<ISet>().Use<HashSet>()
)。