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

发布于 2024-10-12 05:29:28 字数 559 浏览 1 评论 0原文

假设我们有实体框架 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?有办法控制这个吗?

Assume we have POCO class for Entity Framework 4:

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

And this method to retrieve the order from database:

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

So suppose we do this:

Order myOrder = GetOrder(1);

Is myOrder.OrderItems a HashSet or SortedSet? Is there a way to control this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倥絔 2024-10-19 05:29:28

好问题。

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

HashSetSortedSet 都实现了 ICollection,因此两者都是可行的候选者。

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

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

为什么不直接声明你想要的类型,而不是接口。

或者您可以尝试使用依赖项注入(For().Use())。

Good question.

As far as i know (and there is no MSDN/blog/article i am aware of that dispells/proves this), a navigational property can be of any type as long as it implements ICollection<T>.

Both HashSet<T> and SortedSet<T> implement ICollection<T>, so either would be viable candidates.

Did you step through the code? You should be able to see which concrete class get's resolved.

Most people use ICollection<T> / IList<T>. Why are you wanting to declare the property as ISet<T>?

Why don't you just declare which type you want, instead of the interface.

Or you could try using dependency injection (For<ISet>().Use<HashSet>()).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文