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

Dapper's [ExplicitKey] attribute - what's the purpose?

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

这就是属性存在的原因:

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

[Key] 属性采用自动递增键,当您尝试传递自定义(例如 non-int)键时,Insert 和 InsertAsync 会失败并出现 NullReferenceException,即使传递的值显然不是无效的。因此引入 [ExplicitKey] 来处理这些问题。