2016-10-24 37 views
6

Birincil anahtar sütununun bir kimlik sütunu olmadığı bir tabloda Dapper.Contrib'i kullanarak veri eklemeye çalışıyorum. BöyleBirincil anahtar sütunu bir kimlik sütunu olmadığında nasıl veri ekleyebilirim?

public class Foo 
{ 
    public int Id { get; set; } 

    public string Name { get; set; } 
} 

ekleme veriler:

connection.Insert(new Foo() 
{ 
    Id = 1, 
    Name = "name 1" 
}); 

alıyorum aşağıdaki Bu C# sınıftır

begin transaction 

create table 
    dbo.Foos 
    (
     Id int not null, 
     Name nvarchar(max) not null 
    ) 
go 

alter table 
    dbo.Foos 
add constraint 
    PK_Foos primary key clustered 
    (
     Id 
    ) 

go 

commit 

:

veritabanı tablosu bu komut dosyası oluşturulur hata:

Cannot insert the value NULL into column 'Id', table 'FooDatabase.dbo.Foos'; column does not allow nulls. INSERT fails.

Dapper, kural gereği, birincil anahtar olan Id'un doğru olduğunu varsayar, ancak yanlış bir şekilde bir kimlik sütunu olduğunu varsayar. Bir kimlik sütunu olmadığını nasıl belirleyebilirim?

cevap

5

this issue'a göre ExplicitKey özniteliğini kullanabilirsiniz. Eğer Insert çağırdığınızda genellikle ama bunun yerine her zaman 0 olduğu gibi dönüş değeri eklenen öğenin değil id

public class Foo 
{ 
    [ExplicitKey] 
    public int Id { get; set; } 

    public string Name { get; set; } 
} 

Not söyledi.