gpt4 book ai didi

.net - 如何让 dapper 将 int 映射到 bool 属性

转载 作者:行者123 更新时间:2023-12-03 22:21:58 26 4
gpt4 key购买 nike

我有这个课...

public class MyDTO
{
public int Id { get; set; }

public bool Selected { get; set; }
}

然后使用 dapper 尝试创建这样的列表......
            var list = this.db.OpenConnection().Query<MyDTO>(
@"SELECT T1.id, T2.id IS NOT NULL AS selected
FROM table1 T1
LEFT
JOIN table2 T2
ON T2.id = T1.id
AND Tl.id = @Id",
new { Id = id });

它返回这样的结果集....
id  selected
9 0
10 1
11 1
12 0

但是当上面的代码被执行时,我得到一个错误
[InvalidCastException: Specified cast is not valid.]
Deserialize3d3c9260-abcb-4964-97c1-4a4e66b786d3(IDataReader ) +354

[DataException: Error parsing column 2 (selected=0 - Int64)]
Dapper.SqlMapper.ThrowDataException(Exception ex, Int32 index, IDataReader reader) in C:\Projects\Web\SqlMapper.cs:1685
Deserialize3d3c9260-abcb-4964-97c1-4a4e66b786d3(IDataReader ) +432
Dapper.<QueryInternal>d__13`1.MoveNext() in C:\Projects\Web\Source\SqlMapper.cs:608
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +327
System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
Dapper.SqlMapper.Query(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in C:\Projects\Web\Source\SqlMapper.cs:538

我现在要创建一个“翻译”属性,但这是一个不寻常的用例吗?

最佳答案

我不确定这是否是最好的方法,但它应该可以解决问题:

SELECT T1.id, CAST(CASE WHEN T2.id IS NULL THEN 0 ELSE 1 END AS BIT) AS selected
FROM ...

(老实说,我不相信你的 T2.id IS NOT NULL AS selected 子句首先是合法的 T-SQL,但如果你说它有效,那么我会相信你的话!)

关于.net - 如何让 dapper 将 int 映射到 bool 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com