作为操作的结果,我们的数据库中有几个表的新数据行。通过在数据行中为主键和外键使用唯一的负数来确保参照完整性。
我写了下面的例子来模拟情况:
using (var con = new SqlConnection("ConnectionString"))
{
using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Users where 1=0;SELECT * FROM Address where 1=0;", con))
{
adapter.TableMappings.Add("Table", "Users");
adapter.TableMappings.Add("Table1", "Address");
var ds = new DataSet();
using (var commandBuilder = new SqlCommandBuilder(adapter))
{
adapter.Fill(ds);
//--------------------
var userRow = ds.Tables["Users"].NewRow();
var addressRow = ds.Tables["Address"].NewRow();
//userRow
userRow["UserId"] = -1;
userRow["FirstName"] = "F1";
userRow["LastName"] = "L1";
//addressRow
addressRow["AddressId"] = -2;
addressRow["UserId"] = -1;
addressRow["Street"] = "S1";
ds.Tables["Users"].Rows.Add(userRow);
ds.Tables["Address"].Rows.Add(addressRow);
adapter.Update(ds);
}
}
}
但这仅插入用户表中的行,因为第一个选择查询属于此表。
有关此要求的任何想法或解决方案?