Jac*_*ack 8 c# linq linq-to-sql
我有这段代码:
LinqDataContext ctx;
MyRecord R = new MyRecord();
R.Title = "test";
ctx.AllRecords.InsertOnSubmit(R);
bool bExists = ctx.AllRecords.Any(r => r.Title == "test");
Run Code Online (Sandbox Code Playgroud)
注意:我没有调用SubmitChanges.
为什么bExists会回复为假?Linq不应该能够看到插入的记录吗?
如果没有调用submitchanges(),请参见Linq无法将值写入DB.
对于第二个问题,是的,Linq在提交之前缓存对象.我们还可以获取缓存中但未提交到数据库的记录.
当您在上面插入记录时,我们可以从datacontext的缓存中获取以上记录,如下所示:
首先从DataContext获取变更集:
System.Data.Linq.ChangeSet MySet = ctx.GetChangeSet();
Run Code Online (Sandbox Code Playgroud)
之后,提取您的记录表格Changeset:
MyRecord b = (MyRecord )MySet.Inserts.Last();
Run Code Online (Sandbox Code Playgroud)
你将把MyRecord标题作为"test",你插入了.
希望这会有所帮助.
我相信
bool bExists = ctx.AllRecords.Any(r => r.Title == "test");
Run Code Online (Sandbox Code Playgroud)
是SQL服务器返回结果的SQL查询。因此,如果您还没有提交,那么数据库将不知道任何信息:
MyRecord R = new MyRecord();
R.Title = "test";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1498 次 |
| 最近记录: |