質問: 私はEFコアを使用しようとしている既存のデータベースを持っています。このため、*親/子関係が修正された2つのテーブルが自動インクリメントされる状況があります。これが私が持っているEFコアコードです。 ``` modelBuilder.Entity(model => { model.ToTable("RunActual"); model.Property(a => a.ID).UseSqlServerIdentityColumn().HasColumnName("ID"); model.HasKey(a => a.ID); model.HasOne(d => d.RunRow) .WithMany(p => p.RunActualRows) .HasForeignKey(d => new { d.RunID}) .HasConstraintName("FK_RunActual_Run"); }); modelBuilder.Entity(entity => { entity.ToTable("Run"); entity.Property(e => e.RunID).UseSqlServerIdentityColumn(); entity.HasKey(e => new { e.RunID }); }); ``` そのため、基本的には、 `RunRow`が親エンティティで、 `RunActualRow`エンティティであることが`RunActualRow`ます。 `RunID` ( `RunRow` )は、SQL Identityが生成した`RunActualRow`への外部キー`RunActualRow` 。 1つの`RunRow`オブジェクトで親と子を宣言する挿入を実行しようとすると、Entity Frameworkの外部キーが見つからないというエラーが表示されます。 sqlサーバーが`Runs` rowにPKを割り当てるまで外部キーを設定できません。しかし、EF Coreが正しく設定していないようです。無効なFKが0の`RunActual`行。 **誰かがこの特定のシナリオに遭遇しました、そしてそうならば、それは既知の問題であるか、または私は何かを逃していますか?この2つの別々の取引をする必要がありますか?** * なぜ変更しましたか?なぜなら、このシナリオでは、私たちは実際には、あなたが子供をもうけるためには親を持たなければならないということを厳密には強制していないからです。
回答: 実際には何が起きているのかを理解するため、または結果セットが見た目であることを知らせるためにより有益なエラーをスローするためにEntity Frameworkが結果セットをより適切に処理できることは間違いあり**ません** 。 atとそれはあなたが要求したクエリを含んでいませんでした。 これを理解する手助けをしてくれたDavidに感謝します。古いテーブル構造を真似た新しいテーブル構造を作成して、実際に機能することを確認したのではないかと思います。 **このエラーはデータベースへのトリガが原因であることが判明しました。**そのトリガは、エラーがあったかどうかを示すために1または0の結果セットを返したストアドプロシージャを実行していました。エラーでした)。 このため、(結果セットの列名が送信したselectステートメントと一致しない場合でも、これはエンティティフレームワークにその値を採用させます。これはIMOの方が優れている可能性があります)そして子テーブルで試してみてください。これを外部キーとして使用します。 0は有効なFKではなかったので、エラーになります。 十分おかしい、私は1(エラー)を得ていたならば、それは主キーとして1を持つレコードが**ある**ため、働いていた外部キー、としてそれを使用しようとしただろうと思います。 この問題を解決するには、誰かがこの問題に遭遇したらプロファイラーを実行し、Entity Frameworkが何を送っているのか、そしてクエリの結果は何なのかを見てください。実行中のトリガー 皆さんありがとう!