Dapper.Contribを使用して、主キー列がID列ではないテーブルにデータを挿入しようとしています。
データベーステーブルは、次のスクリプトで作成されます。
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
これはC#クラスです:
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
}
このようなデータを挿入する場合:
connection.Insert(new Foo()
{
Id = 1,
Name = "name 1"
});
次のエラーが発生します。
列 'Id'、テーブル 'FooDatabase.dbo.Foos'に値NULLを挿入できません。列はnullを許可しません。INSERTは失敗します。
Dapperは、慣例により、それId
が主キーであると正しく想定していますが、それがID列であると誤って想定しています。ID列ではないことをどのように示すことができますか?
この問題ExplicitKey
に従って属性を使用できます。
public class Foo
{
[ExplicitKey]
public int Id { get; set; }
public string Name { get; set; }
}
戻り値があることに注意していない、それはあなたが呼び出すとき通常であるとして挿入アイテムのIDInsert
はなく、常にあります0
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加