我正在编写一个实体框架 LINQ 查询,其中我想将字符串解析为 UNIQUEIDENTIFIER (又名 GUID)作为WHERE
clause:
public IEnumerable<User> Find(Guid guid)
{
return dbContext
.Users
.Where(user => Guid.Parse(user.GuidText) == guid);
}
我知道这在 SQL 中是可能的,因为我已经测试过它:
SELECT *
FROM Users
WHERE CAST(GuidText AS UNIQUEIDENTIFIER) = @guid;
但是我还没有找到生成的方法CAST
部分。我试过了:
-
(Guid)user.GuidText
,这会生成编译器错误。
-
Convert.ToGuid(user.GuidText)
,但这个方法不存在。
-
Guid.Parse(user.GuidText)
,但这会导致实体框架在转换 LINQ 查询时生成错误。
-
new Guid(user.GuidText)
,但这会导致实体框架在转换 LINQ 查询时生成错误。
-
(Guid)Convert.ChangeType(user.GuidText, typeof(Guid))
,但这会导致实体框架在转换 LINQ 查询时生成错误。
-
SqlGuid.Parse(user.GuidText)
,但这会导致实体框架在转换 LINQ 查询时生成错误。
我怎样才能实现这个目标?作为最后的手段,我愿意在代码中嵌入 SQL。
如果您有充分的理由进行转换 - 您可以根据您的用户表创建一个视图并将您的 GUIDE 文本转换为 UNIQUEIDENTIFIER
SELECT ..., CAST(GuidText AS UNIQUEIDENTIFIER), ...
与在代码中引用视图相比,您应该能够在不进行强制转换的情况下进行比较
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)