場合によっては、データに追加するエンティティの主キーとして特定のIDを挿入する必要があります。従来のMSSQLでは、ステートメントを呼び出すSET IDENTITY_INSERT tablename ON
前に呼び出すことでこれを行うことができます。INSERT INTO
EF4.1コードファーストを使用して同じことを行う方法を理解できないようです。
Dim specificIdRecord As New Record() With {
.RecordID = 25,
'other settings here
}
myDbContext.Records.Add(specificIdRecord)
myDbContext.SaveChanges()
specificIdRecord.RecordID '<== this does not always equal 25!
RecordIDを無視して自動的に生成していることを示すエラーもスローされません。
注:これは時折の挿入操作のみを目的としているため、モデルを変更したり、コンテキストを変更したりしたくありません。また、挿入の実行の前後を手動で設定することで可能な解決策を見ましたが、これには3つのトランザクションが必要です。EFでこれをすべて1つにまとめてください。ExecuteStoreCommand
IDENTITY_INSERT