LINQ正在查询删除数据

时间:2018-02-14 17:32:40

标签: mysql asp.net linq

我在linq中有一个简单的选择查询:

var forms = (from fc in db.formscreators
                     where fc.PropertyID == id || fc.PropertyID == 0
                     orderby fc.FormName ascending
                     select fc).ToList();

我去了MySQL Workbench并从formscreators表中删除了一个数据;但是,LINQ仍然返回删除数据。为什么会这样?我该如何解决?

1 个答案:

答案 0 :(得分:0)

db.formscreators这是什么类型的源代码,我假设您正在触发IQueryable查询并使用EF或类似的DB上下文。现在根据我对你的问题的理解:

  

我去了MySQL Workbench并从formscreators表中删除了一个数据

formscreators中的此数据包含fc.PropertyID == id || fc.PropertyID == 0,因此您希望在触发Linq查询时不会看到它。

  

你能验证吗?

  • 数据库查询是否运行隐式事务以确保提交DML并且没有回滚或没有FK约束,这会阻止记录删除并报告错误。
  • IQueryable在MySql上执行什么类型的查询,分析器将提供更多详细信息。由于直接在My Sql上运行相同的查询时,问题的第一次验证将被删除,因此也应该看到相同的数据。

对于像Mongo这样的No Sql系统,它可以处理最终的一致性,可能会出现过时的数据,但对于符合ACID的RDBMS则不然。主要是您的数据或查询存在差异,请查看上述案例以确保数据/查询的神圣性