CRi*_*ice 2 c# type-conversion linq-to-sql
使用方法参数
Int16? id
Run Code Online (Sandbox Code Playgroud)
而Linq to SQL where子句
where !id.HasValue || m.Id == id
Run Code Online (Sandbox Code Playgroud)
生成的数据上下文中的条件的命令文本是
来自可视化器:
SELECT [t0].[Id], [t0].[Name], [t0].[IsActive]
FROM [Model] AS [t0]
WHERE (CONVERT(Int,[t0].[Id])) = @p0
-------------------------------
@p0 [Int32]: 5
Run Code Online (Sandbox Code Playgroud)
我的映射类将Id作为Int16,数据库本身的列类型为smallint,那么为什么幕后的sql认为参数是整数(Int32)而不是smallint(Int16)?
列映射:
[Column(IsPrimaryKey = true, DbType="SmallInt NOT NULL", CanBeNull=false)]
public Int16 Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
更改要读取的where子句
where !id.HasValue || m.Id == id.Value
Run Code Online (Sandbox Code Playgroud)
关于可空的短片有一些东西可以把它扔掉.我不知道为什么,但我之前碰到了这个,发现添加.Value会起作用.
| 归档时间: |
|
| 查看次数: |
1300 次 |
| 最近记录: |