ValueGeneratedOnAddは効果がありません

user190794

たとえば、次の表があります。

CREATE TABLE Person (
    id int IDENTITY(1,1) NOT NULL PK,
    firstName nvarchar(20) NOT NULL,
    lastName nvarchar(30) NOT NULL,
    birtdate datetimeoffset(7) NOT NULL,
    age int,
    height int,
)

エンティティマッピングの一部があります:

public void Configure(EntityTypeBuilder<Person> builder)
{
    ...
    builder.HasKey(k => k.Id);

    builder.Property(k => k.Id)
        .ValueGeneratedOnAdd()
        .IsRequired();
    ...
}

クライアント側にそのテーブルがあり、サーバー側に同じテーブルがあるMSSQLサーバーがあります。私のプログラムは、クライアントのテーブルからデータを取得してサーバーに送信し、そこでデータがデータベースに追加されます。データの取得中に問題はありませんが、データを挿入しようとするとエラーが発生します。

SqlException: Cannot insert explicit value for identity column in table 'Person' when IDENTITY_INSERT is set to OFF.

にも関わらず .ValueGeneratedOnAdd()

データを取得すると、IDプロパティ(1、2、3など)が入力されたエンティティが取得されますが、それは問題ではないと思います。

Ivan Stoev

データを取得すると、IDプロパティ(1、2、3など)が入力されたエンティティが取得されますが、それは問題ではないと思います。

実際にそれ重要であり、問​​題の原因です。ValueGenerated型のデフォルト以外の値に値を設定したプロパティ(nullnull許容型、0数値型など)には影響しません

この動作は、EFCoreドキュメントの生成された値」セクションで説明されています。

プロパティに値が割り当てられているコンテキストにエンティティを追加すると、EFは新しい値を生成するのではなく、その値を挿入しようとします。プロパティにCLRのデフォルト値(nullfor string0for intGuid.EmptyforGuidなど)が割り当てられていない場合、プロパティには値が割り当てられていると見なされます詳細については、生成されたプロパティの明示的な値を参照してください

これは基本的に、データをアップロードするときにいわゆる「ID挿入」シナリオを許可するためです。詳細については、「SQL ServerIDENTITY列への明示的な値」を参照してください

そうは言っても、その動作を望まない場合は、エンティティをdbコンテキスト/セットに追加Idする0前に、すべてのエンティティ(PK)プロパティがに設定されていることを確認してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ