Рассмотрим следующий пример 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
. Таким образом, проблема состоит в том, чтобы найти соответствующий порядок столбцов во вставленных и выбранных записях.