|
自译MSDN文献 《摆脱开发者对 CommandBuilder的依赖》(31) 首先, InsertCommand 在命令中不需要时间戳列. DACW 知道何时做最好 因为服务器创建时间戳变量—标识(Identity) 列也一样. 这意味着 DACW-生成代码并非总能正确执行. 我们无需担心INSERT的并发检测 因为我们使用标识列来确认插入行是唯一的. 此时, 我们需要在行被插入后返回一个新的标识变量 . DACW 为此目的添加额外的SELECT 命令. 清单 7. DataAdapter InsertCommand 调整 ' InsertCommand ' 创建一个 DA InsertCommand实例 da.InsertCommand = New SqlCommand(Nothing, cn) With da.InsertCommand .CommandText = "INSERT INTO DemoTSConcurrency(Name, State) " _ & "VALUES (@Name, @State)" _ & " SELECT PID, Name, State, TimeStamp FROM DemoTSConcurrency " _ & " WHERE (PID = SCOPE_IDENTITY())" ' 设置 Parameters 集合. 均为输入参数 .Parameters.Add(New System.Data.SqlClient.SqlParameter("@Name", _ System.Data.SqlDbType.VarChar, 50, "Name")) .Parameters.Add(New System.Data.SqlClient.SqlParameter("@State", _ System.Data.SqlDbType.Char, 2, "State")) ' 从 VarChar变为Char End With 调整 UpdateCommand
|