这些.NET自动生成的表适配器命令有什么作用?例如UPDATE / INSERT后跟SELECT

时间:2010-04-08 10:20:07

标签: c# sql-server sql-server-ce dataadapter

我正在使用我正在尝试更改的遗留应用程序,以便它可以与SQL CE一起使用,而它最初是针对SQL Server编写的。

我现在遇到的问题是,当我尝试执行dataAdapter.Update时,SQL CE抱怨说它不期望命令文本中的SELECT关键字。我相信这是因为SQL CE不支持批处理SELECT语句。

自动生成的表适配器命令如下所示......

this._adapter.InsertCommand.CommandText = @"INSERT INTO [Table] ([Field1], [Field2]) VALUES (@Value1, @Value2);
SELECT Field1, Field2 FROM Table WHERE (Field1 = @Value1)";

它在做什么?看起来它是将数据表中的新记录插入到数据库中,然后将该记录从数据库读回到数据表中?有什么意义呢?

我可以直接查看代码并删除所有这些SELECT语句吗?或者是否有更简单的方法来解决我想要在SQL CE中使用这些数据适配器的问题?

我无法重新生成这些表适配器,就像那些知道如何早已离开的人一样。

2 个答案:

答案 0 :(得分:1)

更新后,它只是使用数据库中的最新值更新对象。对我来说似乎总是有点不必要但是嘿......

从维护的角度来看,这些都是令人讨厌的 - 如果你有选择权,你可以通过将这一切抽象到适当的数据层来为自己省去很多麻烦。

答案 1 :(得分:0)

允许字段值可能被表上的触发器更改。我已经想到了,在自动生成的样板中。

虽然select语句有点令人讨厌,因为假设field1是主键......但是autogen代码可能会确保它在生成这段代码之前。