通过方法参数
Int16? id
以及 Linq to SQL where 子句
where !id.HasValue || m.Id == id
数据上下文中条件的结果命令文本是
从可视化工具:
SELECT [t0].[Id], [t0].[Name], [t0].[IsActive]
FROM [Model] AS [t0]
WHERE (CONVERT(Int,[t0].[Id])) = @p0
-------------------------------
@p0 [Int32]: 5
我的映射类的Id为Int16,而数据库本身的列类型为smallint,那么为什么幕后sql认为参数是整数(Int32)而不是smallint(Int16)?
列映射:
[Column(IsPrimaryKey = true, DbType="SmallInt NOT NULL", CanBeNull=false)]
public Int16 Id { get; set; }
将 where 子句更改为读取
where !id.HasValue || m.Id == id.Value
可空空头有一些问题让它变得不那么重要。我不知道为什么,但我之前遇到过这个并发现添加.Value
将工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)