Entity Framework - Получить объект как коллекцию - PullRequest
4 голосов
/ 18 марта 2009

Можно ли получить коллекцию (словарь) из объекта Entity? Мне это нужно для того, чтобы передать части свойств объекта в функцию, которая нуждается в IDictionary.

Ответы [ 2 ]

7 голосов
/ 18 марта 2009

Использование:

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

Подробнее об этом:

ToDictionary не поддерживается в LINQ to Entities. Это означает, что строка запроса LINQ, содержащая ToDictionary, будет скомпилирована, но не будет выполнена, поскольку Entity Framework не знает, как преобразовать их в SQL. Следовательно, сначала необходимо выполнить запрос на сервере базы данных. Таким образом, вы должны сначала спроецировать свой набор в список, который перечисляет набор сущностей. AsEnumerable сделает это. Очевидно, что если набор сущностей большой, вы, вероятно, не хотите делать это со всем этим. Используйте вызов Where или запрос LINQ, чтобы сократить результирующий набор только до тех элементов, которые вы хотите сначала включить в словарь.

0 голосов
/ 18 марта 2009

Не думаю, что полностью понимаю ваш вопрос. Я не знаю ни одного способа привязки таблиц вашей базы данных к свойствам IDictionary, если вы обращаетесь именно к этому, но вы должны иметь возможность создавать любые свойства или методы, необходимые для создания словаря, и передавать их. По какой-то причине нельзя написать метод бизнес-объекта?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...