使用令人惊叹的LinqPad。有没有办法清除对内置LinqToSqlDataContext
(UserQuery
对象,即this
(的所有挂起的数据库更改?
示例LinqPad文件,连接到具有tb_person
表的基本mssql数据库。
void Main()
{
var newRow = new tb_person() {FirstName = "Bob"};
// do lots of db updates, deletes, inserts....
tb_persons.InsertOnSubmit(newRow);
// how to do this, revert all pending Db changes?
//this.SomeMethodToDiscardChanges()
}
我找到了2个选项,这两个选项似乎都不理想,也许在LinqToSql之外有一种特定于LinqPad的方式?
- 创建一个新的DataContext,如何在LinqPad中做到这一点
DataContext.Refresh()
方法传入每个添加或更改的实体,繁琐
引用
如何清除Linq到Sql 上的DataContext缓存
没有保证,但您可以尝试
this.Uncapsulate().ClearCache();
我用过这个,它似乎很有效,但我从未在生产数据库中使用过它。
或者,您可以使用创建一个新的DataContext
var dc = new TypedDataContext(this.Connection.ConnectionString);
但当然,您不能分配给this
,这意味着您需要小心地为所有查询和引用添加前缀以使用dc。