我想通过回滚提交仅更新单行列值

时间:2017-08-02 06:35:46

标签: list linq if-statement datacontext rollback

我想只使用回滚提交更新单行列值但是当我在if中创建表对象并传递给insertonsubmit时它会给我错误,plz帮我怎么解决这个问题

var challan = dataContext.Purchase_Challans.Where(t => t.Challan_ID == Convert.ToInt64(ViewState["challanid"]) && t.Company_ID == Convert.ToInt32(Session["CompanyId"])).Select(t => t).ToList();
                        if (challan.Any())
                        {
                            challan.ToList()[0].Inv_DocumentId = dmsPurchaseInvoice.Document_ID;
                            dataContext.Purchase_Challans.InsertOnSubmit()
                            dataContext.SubmitChanges();
                        }

1 个答案:

答案 0 :(得分:0)

有助于了解有关错误的更多详细信息,但我认为这是因为您告诉dataContext插入您刚刚检索的实体(而您想要更新它)。

你发布的代码甚至都没有编译,并且充满了可疑的代码,例如challan.ToList()已经是列表,或者在委托中解析字符串。

那就是说,这段代码更简单,更有可能工作(但老实说我没有测试过):

var challanId = Convert.ToInt64(ViewState["challanid"]);
var companyId = Convert.ToInt32(ViewState["CompanyId"]);
var challan = dataContext.Purchase_Challans.SingleOrDefault(t => t.Challan_ID == challanId && t.Company_ID == companyId);
if (challan != null)
{
    challan.Inv_DocumentId = dmsPurchaseInvoice.Documet_Id;
    dataContext.SubmitChanges();
}