Не может быть преобразовано в ошибку выражения магазина - PullRequest
0 голосов
/ 29 июля 2011

я получил эту ошибку ...

LINQ to Entities не распознает метод метода Int64 GetPostsCountQuery (Int64), и этот метод нельзя преобразовать в выражение хранилища.

вот мой код:

    private Blog GetBlogDetailsByUserId(long userId)
    {
        return (from gs in _entities.wu_Blog_General_Settings
                //join p in _entities.wu_Blog_Post on gs.User_Id equals p.User_Id
                let pCount = GetPostsCountQuery(userId)
                let lastPublish = GetPostsLastPublishedQuery(userId, pCount)
                where gs.User_Id == userId && !gs.Is_Deleted
                select new Blog
                {
                    BlogOwnerUserId = userId,
                    BlogTitle = gs.Blog_Title,
                    BlogDescription = gs.Blog_Description,
                    PostsCount = pCount,
                    LastPublishedDate = lastPublish
                }).SingleOrDefault();
    }
    #endregion

    #region Get Posts Count Query
    private long GetPostsCountQuery(long userId)
    {
        return (from p in _entities.wu_Blog_Post
                where p.User_Id == userId && p.Post_State != (int)PostState.Removed &&
                !p.Is_Deleted
                select p).Count();
    }
    #endregion

1 Ответ

1 голос
/ 29 июля 2011

Вы не можете использовать метод .NET в Linq-to-entity, потому что EF не может перевести их в SQL (провайдер не исследует их содержимое).

Единственный метод .NET, разрешенный в linq-to-entity:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...