2012-06-23 1 views
0

Я пытаюсь использовать Enitity SQL для запроса данных, но если файл edmx в другом проекте будет создан, будет создано исключение. Ниже приведены мои тестовые шаги.Entity SQL не работает, если файл edmx в другом проекте

  1. Создайте проект библиотеки классов и добавьте к нему файл edmx, создайте из базы данных.

  2. Создайте консольное приложение, добавьте проект библиотеки классов для ссылки и скопируйте файл app.config в этот проект.

  3. Написать код, как показано ниже

    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?

Любые предложения ценятся.

+0

Вы проверили, что сгенерированный 'NorthwindModel.Customer' действительно имеет полные колпачки' ID' недвижимость? – nemesv

+0

Спасибо за ваш быстрый ответ. Да, файл edmx создается из базы данных, все свойства находятся в модели. – James

+0

Какую версию EF вы используете? – nemesv

ответ

0

Это не проблема с EF.

Вы написали инструкцию SQL вручную, вы не используете определение таблицы, которое находится в файле EDMX.

Если вы попытаетесь выполнить оператор SQL в запросе запроса SQL Server, вы увидите, что он также не работает.

Попробуйте что-то вроде этого:

var cus = from customers in context.Customers select customers; 
var cusList = cus.ToList();