【发布时间】:2009-03-18 15:58:04
【问题描述】:
是否可以从实体对象中获取集合(字典)?我需要这个来将对象的部分属性传递给需要 IDictionary 的函数。
【问题讨论】:
标签: entity-framework
是否可以从实体对象中获取集合(字典)?我需要这个来将对象的部分属性传递给需要 IDictionary 的函数。
【问题讨论】:
标签: entity-framework
用途:
Context.EntitySetName.AsEnumerable().ToDictionary(o => o.Key, o => o.Value);
一些细节:
在 LINQ to Entities 中不支持 ToDictionary。这意味着包含 ToDictionary 的 LINQ 查询字符串将编译,但不会执行,因为实体框架不知道如何将它们转换为 SQL。因此,您必须首先在数据库服务器上执行查询。因此,您必须首先将您的集合投影到一个列表中,该列表会枚举实体集。 AsEnumerable 会这样做。显然,如果实体集很大,您可能不想对整个事物执行此操作。使用 Where 调用或 LINQ 查询将结果集缩减为仅在字典中首先出现的项目。
【讨论】:
我认为我没有完全理解你的问题。如果这是您所指的,我不知道将您的数据库表绑定到 IDictionary 属性的任何方法,但是您应该能够创建构建字典所需的任何属性或方法,并传递它。由于某种原因,编写业务对象方法不是一种选择吗?
【讨论】: