2013-06-11 2 views

ответ

9

Это не ясно, что вы имеете в виду с помощью Linq к Entities и EF отдельно. Это единственная библиотека EntityFramework.dll. Если вы хотите писать запросы на простой SQL, вы можете сделать это с SqlQuery() методом DbSet класса:

var users = context.Users.SqlQuery("SELECT * FROM dbo.Users").ToList(); 

В этом случае EF действует только в качестве картографа, но он не генерирует запрос.

UPDATE Согласно вашим комментариям, вы хотите избежать ссылки на Linq. И ответ - вы не можете этого сделать, потому что ссылки EF System.Linq namespace. Рассмотрим использование NHibernate с API критериев.

И помните - Linq встроен в язык. Лучше потратьте некоторое время на то, чтобы обойти это, чем избежать этого. Linq очень мощный, и вы будете использовать его не только для доступа к базе данных, но и для повседневной работы с коллекциями в памяти, xml, наборами данных и т. Д.

+1

+1 так близко, как вы можете получить, даже если это не совсем удобный способ. –

+0

Я хочу удалить все ссылки на linq. Я не люблю linq –

+1

@ B413 Вы можете использовать 'context.Database.SqlQuery', даже если это не удобно, это почти самый низкий уровень, который вы можете использовать, и не использует Linq. Один из примеров доступен [здесь] (http://msdn.microsoft.com/en-us/data/jj592907.aspx) в нижней части страницы. –

4

Да возможно, но не уверен, почему вы бы. Если вы собираетесь идти маршрут с помощью запросов вроде этого:

var users = context.Users.SqlQuery("SELECT * FROM dbo.Users").ToList(); 

, как было отмечено выше, то почему бы не угробить EF в целом и использовать что-то вроде dapper, который невероятно прост в использовании и очень быстро с меньшими затратами , Использование EF без linq дает вам все плохие части EF (раздувание, медленные скорости), без преимуществ возможностей запросов LINQ, которые делают его настолько мощным.

Смежные вопросы