Запрос концептуальной модели с помощью Entity SQL - PullRequest
2 голосов
/ 06 января 2011

Мне показалось, что я где-то читал, что вы на самом деле можете запросить вашу концептуальную модель с помощью Entity Sql, используя строковые запросы следующим образом:

class DBSetTest<T> : List<T> 
{
    DBEntities db = new DBEntities();

    public DBSetTest()
    {
        ObjectQuery<T> test = new ObjectQuery<T>("SELECT Name FROM Sessions WHERE  Name = 'sean'", db);

        foreach (var v in test)
        {
            this.Add(v); 
        }
    }     
}

Где 'Sessions' - это пользовательский тип сущности, который я определил сDefiningQuery.В противном случае я бы запросил его с нормальным синтаксисом linq.Entity SQL только запрашивает хранилище, или он может запрашивать мою концептуальную модель так же, как LINQ-to-Entities?Если так, то не уверен, что у меня правильный синтаксис, так как он, вероятно, не является синтаксисом sql.Моя цель - создать своего рода общий список, где я могу писать динамические запросы к моей концептуальной модели.

Я получаю следующую ошибку:

«Имя» не может быть разрешено в текущей области или контексте.Убедитесь, что все ссылочные переменные находятся в области видимости, что необходимые схемы загружены и что на пространства имен ссылаются правильно.Рядом с простым идентификатором, строка 1, столбец 43.

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Я думаю, это не правильный синтаксис Entity SQL, вероятно, вы должны добавить какое-то ключевое слово, подобное этому:

SELECT VALUE s.Name FROM your_ObjectContext_name.Sessions AS s WHERE s.Name = 'sean'
0 голосов
/ 29 июля 2011

Полученная ошибка говорит о том, что вы должны поставить ее.перед именем, как это:

"SELECT it.Name FROM Sessions WHERE it.Name = 'sean'"
...