Sco*_*ain 5 c# sqlcommandbuilder
当我使用一个SqlCommandBuilder推更新/插入/删除服务器,我需要打电话.GetUpdateCommand(),.GetInsertCommand()和.GetDeleteCommand()?
using (var adapter = new SqlDataAdapter("select * from MyTable", _connection))
using (var builder = new SqlCommandBuilder(adapter))
{
adapter.Fill(dt);
//Magic happens
builder.GetUpdateCommand(); //is this line necessary
builder.GetInsertCommand(); //is this line necessary
adapter.Update(dt);
}
Run Code Online (Sandbox Code Playgroud)
我看到有关正确程序的相互矛盾的 例子.我知道没有它可行,但我不知道它是否在幕后做了一些特别的事情.这是必要的还是货物编程?
我在我的测试数据库上做了一些测试,看看我是否能想出一个如果我没有调用就会出现错误的情况GetInsertCommand().事实证明它可能发生,在我的情况下,它发生在我更新数据库中的几个不同的表时.
出于某种原因,在更新我的第4个表时,它无法正确插入.这让我很困扰,所以我决定再做一些研究,这些研究把我带到了这里.密切关注:
首次生成Transact-SQL语句后,如果应用程序以任何方式更改语句,则必须显式调用RefreshSchema.否则,GetInsertCommand仍将使用前一个语句中的信息,这可能不正确.
这告诉我它可以在不调用的情况下工作,但最好还是调用它.我试图找到为什么有时它确实有效的推理,有时却没有.但我完全没能弄明白.
| 归档时间: |
|
| 查看次数: |
4121 次 |
| 最近记录: |