この問題の記事は複数見つかりましたが、問題は少し異なり、私のシナリオ。エンティティフレームワーク:同じタイプの別のエンティティが既に同じプライマリキー値を持っているため、タイプ「MODELNAME」のエンティティをアタッチできませんでした
私はデータベースによって2つの異なるスキーマを持っています。例えば
PreSchool.Students
&School.Students
。また、私たちの要件によっては、Students
テーブルでは、プライマリキーを含めて安心です。私ははっきりエンティティごとにtableName
&SchemaName
を設定var wouldBeUpdatedStudent = await context.Students .FindAsync(student.StudentIdentity).ConfigureAwait(false); wouldBeUpdatedStudent = student; //updated student object context.Entry(wouldBeUpdatedStudent).State = EntityState.Modified; // This line throws error var result = await context.SaveChangesAsync().ConfigureAwait(false);
OnModelCreating
の下:私のコードで今すぐ- 、私は 'PreSchool.Students' を使用して、次のコードの記録を更新しています。これにより、エンティティ/モデルの状態を変更するたびに、
OnModelCreating
の設定に従って正しいテーブルをキャッチする必要があります。しかし、これは起こっておらず、例外をスローします。
私は学生エンティティにカスケード接続する場合、これが働かない
context.Students.AsNoTracking()
を使用してみました。ただし、同じDDLであるカスケード/子エンティティがあります。例えばcontext.Student.Exams
私は数年前に非常によく似た質問をしました。当時の回答は「Entity FrameworkはSql Serverの異なるスキーマで同じ名前のテーブルをサポートしていません」 –
@SamAxe、幸いにも、私は[この回答](https://stackoverflow.com/a/31771363/659538)を試してくれました。 – Kenz