Dapper的[ExplicitKey]属性 - 目的是什么?

时间:2018-03-22 12:41:03

标签: dapper

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

1 个答案:

答案 0 :(得分:1)

这就是属性存在的原因:

https://github.com/StackExchange/Dapper/issues/351

[Key]属性假定自动增量键,当您尝试传递自定义(例如非int)键时,Insert和InsertAsync将失败并显示NullReferenceException,即使传递的值明显不为null。因此引入了[ExplicitKey]来处理这些。