我试图使用Guid作为并发令牌,但是每次尝试插入记录时,都会出现一个关于无法添加空值的异常。
生成的SQL和异常消息:
Failed executing DbCommand (4ms) [Parameters=[@p0='?' (DbType = Guid),@p1='?' (Size = 10) (DbType = AnsiString),@p2='?' (Size = 150) (DbType = AnsiString)],CommandType='Text',CommandTimeout='30']
SET NOCOUNT ON;
INSERT INTO [Application] ([Id],[Code],[Name])
VALUES (@p0,@p1,@p2);
SELECT [Version]
FROM [Application]
WHERE @@ROWCOUNT = 1 AND [Id] = @p0; System.Data.SqlClient.SqlException (0x80131904): Cannot insert the value NULL into column 'Version',table 'MyCompany.dbo.Application'; column does not allow nulls. INSERT fails.
public class Application
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
// A concurrency token for use with the optimistic concurrency checking
public Guid Version { get; set; }
}
使用模型构建器:
builder.Property(c => c.Version)
.IsConcurrencyToken()
.ValueGeneratedOnAddOrupdate();
基本上,我需要有关我做错事情的建议。