2013-06-20 5 views
1

У меня есть следующая проблема: я использую первый подход EntityFramework v5.0 для моего проекта C#, где пользователь может выбрать некоторые поля из объекта с помощью GUI, например: класс Customer с именем, телефоном, Свойства города, пользователь может выбрать любой. Я хочу создать SQL-запросы во время выполнения с использованием метода SqlQuery (http://msdn.microsoft.com/en-us/library/gg679117(v=vs.103).aspx), поэтому мне нужно создать требуемый тип во время выполнения, мне это удалось, используя Reflection.Emit для простых запросов, таких как SELECT Name,City FROM Customers (создаю свойства Type with Name и City string Вот). Но как мне создать свойства для функций Aggregate? НапримерEntityFramework Совокупное имя столбца

SELECT Customers.Name, COUNT(Customers.City) 
FROM Customers 
GROUP BY Customers.Name 

Я попытался создать свойство с именем «Count_Customer_City» и десятки других, но я всегда получаю 0 в результате в нем, так это выглядит, как мне не нужно имя его правильно, и она будет заполнена фактическими значениями, однако я не могу понять, правильное название (или, может быть, есть намного лучше общий подход)

+0

Почему бы вам не использовать метод LINQ вместо использования ' SqlQuery'? –

+3

Ваша победа в цели EF, делая это. Выберите то, что вам нужно, используя Linq и проект в тип, который вам нужен после запроса, и/или создайте объекты бизнес-домена для поддержки вашего вывода. – Jay

+0

Что случилось с получением бит ко многим данным _once_ и скрыть/показать в пользовательском интерфейсе? В конце концов, это может быть гораздо более отзывчивым, потому что теперь вам нужно снова получить все данные, когда пользователь хочет увидеть еще один столбец. Он выглядит неплохо, но он слишком переработан. Это может быть даже показанием отсутствия ясных вариантов использования и дизайна взаимодействия. –

ответ

0

Решенный его с помощью context.Database.Connection.CreateCommand().CreateReader() метод, где я могу установить имена столбцов явно