1

私はEF6コードファーストで作成したDBを持っています。一部のテーブルにはID列があります。 OLD Id値を持つこれらのテーブルにいくつかのレコードを挿入する必要があります。 このリンクHow to switch between DatabaseGeneratedOption.Identity...に記載されている解決策を試しました。計算されたオプションとなしのオプションを切り替える方法を示しますが、ID列では切り替える方法はありません。 IDENTITY_INSERTがOFFに設定されていると、「リンク 'のID列に明示的な値を挿入できません」というエラーメッセージが表示されます。 これを解決する方法はありますか?どのように切り替えるかDatabaseGeneratedOption.Identityをオン/オフで実行時に

答えて

2

あなたが直面している問題は、EFが明示的なID値をDBMSに送信することですが、IDENTITY_INSERTがオフに設定されている間は何も期待していません。

さらに次の操作が必要です。 context.Database.ExecuteSqlCommand( "SET IDENTITY_INSERT Links ON");

これは、DBMSに明示的な値も受け入れるよう指示します。 これを動作させるには、このコマンドと(少なくとも)SaveChanges()を1つのトランザクションにラップする必要があります。

+1

素晴らしい。できます! –

関連する問題