我发现这个问题有多个帖子,但是我的问题有点不同,显示的错误与我的场景。实体框架:附加类型'MODELNAME'的实体失败,因为另一个相同类型的实体已经具有相同的主键值
我有两个不同的数据库模式。例如
在我的代码PreSchool.Students
&School.Students
。并且根据我们的要求,对于Students
表格(包括主键)的休息都是相同的。现在,我更新的 'PreSchool.Students' 使用下面的代码记录:
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
我清楚地为每个实体的设置tableName
&SchemaName
。由此,我希望每当我更改实体/模型状态时,都应该按照OnModelCreating
的设置捕捉正确的表格。但是,这不会发生并抛出异常。
我尝试使用
context.Students.AsNoTracking()
这个作品,如果没有级联到学生的实体。但是,有一些级联/子级实体也是相同的DDL。例如context.Student.Exams
几年前我问了一个非常类似的问题。那时的答案是“实体框架不支持Sql Server中不同模式中的同名表。” –
@ SamAxe,幸运的是,我试过[这个答案](https://stackoverflow.com/a/31771363/659538)并为我工作。 – Kenz