假设我有以下问题:
SQL
Select *
from tblExample
where Id = @Id
值通常不应具有空值,但有时会出于我无法控制的原因。
在类属性中分配时出现错误,例如(从“DBNull”类型转换为“Integer”类型无效):
VB
dim dr as DataRow = 'Data from Database'
Dim object1 As New myObject
object1.Number = CInt(dr("Number"))
object1.Name = CStr(dr("Name"))
object1.Active = CBool(dr("Active"))
C#
DataRow dr = //Data from Database
myObject object1 = new myObject();
object1.Number = (int)dr["Number"];
object1.Name = (string)dr["Name"];
object1.Active = (bool)dr["Active"];
是否有更短的等价物然后写出:
SQL
Select isnull(columnA, 0), isnull(columnB, ''), isnull(columnC, false)
from tblExample
where Id = @Id
感谢。
答案 0 :(得分:2)
你真的需要DataRow
吗?你可以在小巧玲珑中做到这一点:
int Id = ...
var object1 = conn.Query<ObjectType>("Select * from tblExample where Id = @Id",
new { Id }).SingleOrDefault();
这将为您完成所有映射,因为列匹配,并将正确处理null
;之后,object1.Number
,.Name
和.Active
将符合您的预期。