Как Entity Framework управляет сопоставлением результат запроса к анонимному типу?

Рассмотрим следующий пример LINQ to entity query

from history in entities.foreignuserhistory
select new { history.displayname, login=history.username, history.foreignuserid }

ToTraceString () строка возврата выглядит так:

SELECT "Extent1"."foreignuserid" AS "foreignuserid",
   "Extent1"."displayname"       AS "displayname",
   "Extent1"."username"          AS "username"
FROM "integration"."foreignuserhistory" AS "Extent1"

Проблема для меня в том, что столбцы идут в порядке, отличном от запроса, и не принимают псевдонимы, такие как логин в примере. Где Entity Framework хранит информацию о сопоставлении для анонимных типов?

Предпосылки: я собираюсь разработать вставку с операцией выбора с использованием LINQ to entity для массовых операций.

Обновление: Вставить с выбором не так сложно, за исключением неизвестного алгоритма сопоставления столбцов и свойств. Можно получить имена таблиц и столбцов для назначения ObjectSet , используя метаданные, построить INSERT INTO tableName (column_name1,…) строку оператора sql, а затем добавить некоторую ObjectQuery.ToTraceString Оператор SELECT. Затем создайте DbCommand с результирующим текстом, используя ((EntityConnection) ObjectContext.Connection) .StoreConnection и заполните параметры команды из ObjectQuery . Таким образом, проблема состоит в том, чтобы найти соответствующий порядок столбцов во вставленных и выбранных записях.

5
задан Mike 19 October 2011 в 12:24
поделиться