SqlServerCompact 4.0 无法在 WPF App 中使用 entity framework 的所有功能
SqlServerCompact 4.0 cannot use all features of entity framework in WPF App
我在我的 WPF 应用程序中使用 EntityFramework.SQLServerCompact
nuget 包。
它确实部分起作用,例如:
确实如此 运行 ToList()
。
它没有 运行 Where()
查询,它显示了这个异常:
SqlCeException: The specified argument value for the function is not
valid. [ Argument # = 3,Name of function(if known) = case ]
当我 运行 以下查询时:
_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))
不要在谓词中调用 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 服务器精简版已被弃用。
我在我的 WPF 应用程序中使用 EntityFramework.SQLServerCompact
nuget 包。
它确实部分起作用,例如:
确实如此 运行 ToList()
。
它没有 运行 Where()
查询,它显示了这个异常:
SqlCeException: The specified argument value for the function is not valid. [ Argument # = 3,Name of function(if known) = case ]
当我 运行 以下查询时:
_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))
不要在谓词中调用 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 服务器精简版已被弃用。