SqlServerCompact 4.0 не может использовать все возможности платформы сущностей в приложении WPF - PullRequest
0 голосов
/ 15 апреля 2019

Я использую пакет EntityFramework.SQLServerCompact nuget в своем приложении WPF.

Это работает частично, например:

Он работает ToList().

Он не запускает Where() запрос и показывает это исключение:

SqlCeException: указанное значение аргумента для функции не действительный. [Аргумент # = 3, имя функции (если известно) = регистр]

Когда я запускаю следующий запрос:

_db.Users.Where(x => x.Email == email_input.Text.ToString() && x.Password == password_input.Password.ToString())

Запрос, который он выполняет:

SELECT 
    [Extent1].[Id] AS [Id], 
    [Extent1].[Name] AS [Name], 
    [Extent1].[Email] AS [Email], 
    [Extent1].[Phone] AS [Phone], 
    [Extent1].[Password] AS [Password], 
    [Extent1].[CreatedAt] AS [CreatedAt]
    FROM [Users] AS [Extent1]
    WHERE ([Extent1].[Email] = (CASE WHEN (cast(@p__linq__0 as ntext) IS NULL) THEN N'' ELSE @p__linq__0 END)) AND ([Extent1].[Password] = (CASE WHEN (cast(@p__linq__1 as ntext) IS NULL) THEN N'' ELSE @p__linq__1 END))

1 Ответ

1 голос
/ 15 апреля 2019

Не называйте ToString() в предикате.Попробуйте выделить строки перед построением запроса:

string email = email_input.Text.ToString(); //isn't Text already a string by the way?
string pwd = password_input.Password.ToString();

var users = _db.Users.Where(x => x.Email == email && x.Password == pwd).ToArray();

Обратите внимание, что SQL Server Compact Edition устарел.

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