繁体   English   中英

在提交更改之前,Linq无法找到插入的记录

[英]Linq cannot find inserted record before submitchanges

我有这段代码:

LinqDataContext ctx;

MyRecord R = new MyRecord();
R.Title = "test";
ctx.AllRecords.InsertOnSubmit(R);

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

注意:我没有调用SubmitChanges。

为什么bExists会回复为假? Linq不应该能够看到插入的记录吗?

如果没有调用submitchanges(),请参见Linq无法将值写入DB。

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

当您在上面插入记录时,我们可以从datacontext的缓存中获取以上记录,如下所示:

首先从DataContext获取变更集:

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

之后,提取您的记录表格Changeset:

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

你将MyRecord标题为“test”,你插入了它。

希望这会有所帮助。

我相信

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

是SQL服务器返回结果的SQL查询。 所以,如果你还没有提交,那么数据库对以下内容一无所知:

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

暂无
暂无

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

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