2014-11-06 32 views
0

我是表值参数的新手。我有两个表格:商业(父母)和商业(母亲)。有一列:business_id,它是业务表的主键和businessdetail的外键。两条表之间的关系:使用表值参数更新数据表

ds.Relations.Add(new DataRelation("Business_BusinessDetail", ds.Tables["Business"].Columns["Business_ID"],ds.Tables["BusinessDetail"].Columns["Business_ID"])); 

现在,在使用表值参数插入父表,我想我做的插入前儿童table.My代码更新主键:

//父

      SqlParameter tvpParamparent = insertCmd.Parameters.AddWithValue("@Business", newBusinessDS.Tables["Business"]);//Needed TVP 
          tvpParamparent.SqlDbType = SqlDbType.Structured; 
          insertCmd.ExecuteNonQuery();-->does not update business_id 

//子

SqlParameter tvpParamchild = insCmdChild.Parameters.AddWithValue("@BusinessDetail", newBusinessDS.Tables["BusinessDetail"]); 
           tvpParamchild.SqlDbType = SqlDbType.Structured;/ 
           insCmdChild.ExecuteNonQuery();-->it throws an error:"The MERGE statement conflicted with the FOREIGN KEY constraint "FK_BusinessDetail_Business"" 

回答

0

不要在参数名称中使用 “@” 字符