Dapper的 [ExplicitKey] 属性的目的是什么? 在this example生成的SQL绝对相同,无论是否应用了密钥。
exec sp_executesql
N'insert into InvoiceDetail ([InvoiceID], [Detail]) values (@InvoiceID, @Detail);
select SCOPE_IDENTITY() id',N'@Detail nvarchar(4000),@InvoiceID int',@Detail=N'Insert_Single_1',@InvoiceID=4
答案 0 :(得分:1)
这就是属性存在的原因:
https://github.com/StackExchange/Dapper/issues/351
[Key]属性假定自动增量键,当您尝试传递自定义(例如非int)键时,Insert和InsertAsync将失败并显示NullReferenceException,即使传递的值明显不为null。因此引入了[ExplicitKey]来处理这些。