繁体   English   中英

实体框架未更新

[英]Entity Framework Miss Update

有时实体没有在 scope 内更新,但插入已提交。 我认为这个问题是由于隔离级别,添加到注册表中的查询数量。 我还认为这可能是数据库中事物有效的顺序,因为暗示更改实体的端点调用发生得非常快,即使顺序正确也是如此。 我不知道...

代码是这样的:

using (var scope = new TransactionScope())
{
     var db = new Context().Database.ExecuteSqlCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;")

     var student= db.Students.SingleOrDefault(x => x.ID == 1);

     var schoolName = "TestSchool";

     db.School.Insert(new School{ Name = schoolName }); // IT ALWAYS WORKS

     student.School = schoolName; //SOMETIMES THIS CHANGE DOESN'T WORK

     db.Save();

     scope.Complete();
}

有什么帮助吗?

它只发生在海量数据中,使测试变得困难

你应该做的是先查询学校,然后将结果分配给student.School

像这样:

using (var scope = new TransactionScope())
{
     var db = new Context().Database.ExecuteSqlCommand("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;")

     var student= db.Students.SingleOrDefault(x => x.ID == 1);

     var schoolName = "TestSchool";

     db.School.Insert(new School{ Name = schoolName }); // IT ALWAYS WORKS

     // Query new school here
     var newSchool = db.School.SingleOrDefault(x => x.SchoolName = schoolName);
     // Assign the result to student's School property
     student.School = newSchool;

     db.Save();

     scope.Complete();
}

这样,实体框架将能够“跟踪”更改并生成正确的 SQL 以更新数据库

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM