在LinqPad中,如何丢弃/清除对数据库的所有挂起的更改,LinqToSql DataContext没有方法



使用令人惊叹的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的方式?

  1. 创建一个新的DataContext,如何在LinqPad中做到这一点
  2. DataContext.Refresh()方法传入每个添加或更改的实体,繁琐

引用
如何清除Linq到Sql 上的DataContext缓存

没有保证,但您可以尝试

this.Uncapsulate().ClearCache();

我用过这个,它似乎很有效,但我从未在生产数据库中使用过它。

或者,您可以使用创建一个新的DataContext

var dc = new TypedDataContext(this.Connection.ConnectionString);

但当然,您不能分配给this,这意味着您需要小心地为所有查询和引用添加前缀以使用dc。

最新更新