实体框架 - 将对象作为集合获取

时间:2009-03-18 15:58:04

标签: entity-framework

是否可以从实体对象中获取集合(Dictionary)?我需要这个,以便将对象的部分属性传递给需要IDictionary的函数。

2 个答案:

答案 0 :(得分:7)

使用:

Context.EntitySetName.AsEnumerable().ToDictionary(o => o.Key, o => o.Value);

关于此的一些细节:

LINQ to Entities中不支持ToDictionary。这意味着包含ToDictionary的LINQ查询字符串将编译,但不会执行,因为实体框架不知道如何将它们转换为SQL。因此,您必须首先在数据库服务器上执行查询。因此,您必须首先将您的集合投影到列表中,该列表枚举实体集。 AsEnumerable会做到这一点。显然,如果实体集很大,你可能不想对整个事情做这件事。使用Where调用或LINQ查询将结果集首先减少为字典中所需的项目。

答案 1 :(得分:0)

我认为我完全不了解你的问题。我不知道将数据库表绑定到IDictionary属性的任何方法(如果这是您所指的),但您应该能够创建构建字典所需的任何属性或方法,并传递它。由于某种原因,编写业务对象方法不是一种选择吗?