Entity SQL не работает, если файл EDMX в другом проекте
Я пытаюсь использовать Enitity SQL для запроса данных, но если файл edmx в другом проекте, будет сгенерировано исключение. Ниже мои тестовые шаги.
Создайте проект библиотеки классов и добавьте в него файл edmx, создайте из базы данных.
Создайте консольное приложение, добавьте в него проект библиотеки классов и скопируйте файл app.config в этот проект.
Напишите код, как показано ниже
using (NorthwindEntities context = new NorthwindEntities()) { string queryString = @"SELECT VALUE cus FROM NorthwindEntities.Customers AS cus WHERE cus.ID > 10"; ObjectQuery<Customers> cusQuery = context.CreateQuery<Customers>(queryString); List<Customers> cusList = cusQuery.ToList(); }
Когда я запускаю проект консольного приложения, возникает исключение: "ID" не является членом типа "NorthwindModel.Customers" в загруженных в настоящий момент схемах ".
Кажется, что схема не загружена в проект, у кого-нибудь есть идеи? Дополнительный вопрос: в этом запросе я выбираю все свойства этого типа, если я выбираю только некоторые из свойств, как вернуть анонимный тип ObjectQuery?
Любые предложения приветствуются.
1 ответ
Это не проблема EF.
Вы написали оператор SQL вручную, вы не используете определение таблицы, которое находится в файле EDMX.
Если вы попытаетесь выполнить инструкцию SQL в запросе SQL Server, вы также увидите, что она также не работает.
Попробуйте что-то вроде этого:
var cus = from customers in context.Customers select customers;
var cusList = cus.ToList();