То, как столбцы в запросе имеют псевдонимы, не должно иметь значения, равно как и их порядок.Entity Framework обрабатывает заполнение нового экземпляра вашего анонимного типа каждым результатом, и именно здесь вы получаете псевдоним, такой как login
.
. В качестве примечания, я думаю, что Entity Framework может работать не совсем так, как вы думаете.Вы не можете сделать выбор / вставку в одной операции, как вы можете использовать обычный запрос SQL.Entity Framework выполнит ваш выбор, вернет результаты обратно, использует эти результаты для создания новых экземпляров ваших сущностей (или, в вашем случае, анонимного типа), а затем вам придется использовать каждый результат для создания нового экземпляра вашей цели.введите, добавив каждый из них в контекст вашей сущности / объекта, и, наконец, вызовите сохранение изменений в контексте вашей сущности / объекта.Это приведет к выполнению отдельного оператора вставки для каждой новой добавленной вами сущности.
Если вы хотите сделать все это за одну операцию без создания новой сущности для каждой записи, вам потребуетсялибо использовать хранимую процедуру, отображаемую в вашем контексте, либо выполнить встроенный SQL-запрос, используя ObjectContext.ExecuteStoreCommand
ОБНОВЛЕНИЕ: На основе ваших ответовто, что вы действительно понимаете, ближе к метапрограммированию, которое больше зависит от вашей модели сущностей, чем от фактического использования структуры сущностей.Я не знаю, какую версию EF вы используете (EF 4.0? 4.1 сначала с кодом и DbContext?), Но я добился большого успеха, используя шаблон C # POCO с EF 4.0 (шаблон POCO являетсяскачать из онлайн визуальной студии (галерея).Он использует шаблон T4 для генерации классов POCO из модели данных .edmx.В своем шаблоне T4 вы можете добавить в свой контекст методы, которые по сути будут вызывать ExecuteStoreCommand
, но разница будет в том, что вы сможете сгенерировать запрос, который будет выполнен на основе вашей модели данных.Таким образом, каждый раз, когда меняется ваша модель данных, ваш запрос будет синхронизироваться с изменениями.