我有这段代码:
LinqDataContext ctx;
MyRecord R = new MyRecord();
R.Title = "test";
ctx.AllRecords.InsertOnSubmit(R);
bool bExists = ctx.AllRecords.Any(r => r.Title == "test");
注意:我没有调用 SubmitChanges。
为什么 bExists 返回为 false? Linq 不应该能够看到插入的记录吗?
最佳答案
请参阅如果未调用 submitchanges(),Linq 无法将值写入数据库。
对于第二个问题,是的,Linq 在提交之前缓存对象。我们还可以获取在缓存中但未提交到数据库的记录。
当你在上面插入记录时,我们可以从datacontext的缓存中获取上面的记录,如下所示:
首先从 DataContext 中获取变更集:
System.Data.Linq.ChangeSet MySet = ctx.GetChangeSet();
之后,从变更集中提取您的记录:
MyRecord b = (MyRecord )MySet.Inserts.Last();
您将获得标题为“test”的 MyRecord,这是您插入的。
希望这会有所帮助。
关于c# - Linq 在提交更改之前找不到插入的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8737293/