Linq在子切换之前找不到插入的记录

本文关键字:找不到 插入 记录 Linq | 更新日期: 2023-09-27 18:19:40

我有这段代码:

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在子切换之前找不到插入的记录

See如果未调用submitchanges(),Linq将无法将值写入DB。

对于第二个问题,是的,Linq在提交之前缓存对象。我们还可以获取缓存中但未提交到数据库的记录

当您插入上面的记录时,我们可以从数据上下文的缓存中获得上面的记录,如下所示:

首先从DataContext获取变更集为:

System.Data.Linq.ChangeSet MySet = ctx.GetChangeSet();

之后,从Changeset:中提取您的记录

MyRecord b = (MyRecord )MySet.Inserts.Last();

您将得到标题为"测试"的MyRecord,您插入了它。

希望这会有所帮助。

我相信

bool bExists = ctx.AllRecords.Any(r => r.Title == "test"); 

是SQL服务器返回结果的SQL查询。因此,如果你还没有提交,那么DB对一无所知

MyRecord R = new MyRecord(); 
R.Title = "test";