日期:2014-05-20  浏览次数:21046 次

LINQ TO SQL和触发器的问题.
如下代码:
  //Ticket实例
  Ticket tk = new Ticket();

  //新增
  if (Request.QueryString["operate"] == "add")
  {
  tk.Ticket_Barcode = nodeTrans_Barcode.InnerText;
  tk.Ticket_DelFlag = false;
  }

  //修改
  if (Request.QueryString["operate"] == "edit")
  {
  var serial = Request.QueryString["serial"];

  var tks = from t in db.Tickets
  where t.Ticket_Serial == int.Parse(serial)
  select t;
  tk = tks.First();
  }

  //会务票务登录
  tk.Ticket_DateTime = nodeTrans_Datetime.InnerText.Replace("-", "") + nodeTrans_Hour.InnerText + nodeTrans_Minute.InnerText;
  tk.Ticket_From = nodeTrans_From.InnerText;
  tk.Ticket_IsPaid = true;
  tk.Ticket_Memo = nodeTrans_Memo.InnerText;
  tk.Ticket_Seat = int.Parse(nodeTrans_Seat.InnerText);
  tk.Ticket_To = nodeTrans_To.InnerText;
  tk.Ticket_Transport = int.Parse(nodeTrans.InnerText);
  tk.Ticket_Quantity = short.Parse(nodeTrans_Count.InnerText);
  tk.Ticket_Money = decimal.Parse(nodeTrans_Money1.InnerText);

  if (nodeTrans_Paid.InnerText == "1")
  tk.Ticket_IsPaid = true;
  else
  tk.Ticket_IsPaid = false;

  if (Request.QueryString["operate"] == "add")
  db.Tickets.InsertOnSubmit(tk);
   
  db.SubmitChanges();

在SubmitChanges的时候报“成员 AutoSync 失败。对于要在插入后自动同步的成员,类型必须具有自动生成的标识或在插入后未被数据库修改的键。”,数据库中的Tickets表有一个insert触发器,这个insert触发器update另外一个叫Registrant的表,然后Registrant表也有一个update的触发器,我感觉是Ticket的insert触发器update那个Registrant后,Registrant表的update触发器也触发了,结果出现这样的错误。
不知道这个问题怎么解决,请赐教,谢谢。。。

------解决方案--------------------
解决你的数据库问题去,跟Linq无关。
------解决方案--------------------
数据库设置问题。主要是主键问题
------解决方案--------------------
徐诶下
------解决方案--------------------
触发器和linq无关的。。。