我如何在wcf服务中更新我的实体

时间:2013-08-12 05:56:20

标签: c# wcf entity-framework

在我的wcf服务中,我将方法作为操作合同,如下所示:

public void Update(long id, string docNo, Nullable<int> item, string regNo, string payCode, string fixVar,
        string effectiveDate, string calcBase, Nullable<decimal> value, string costCenter, string subAcc,
        string docReference, string comment)
    {
        using (WFS006Entities dbu = new WFS006Entities())
        {
            NIOCPay_PayDetail doc = dbu.NIOCPay_PayDetail.Where(it => it.ID == id).SingleOrDefault();
            if (doc != null)
            {
                doc.DocNo = docNo;
                doc.Item = item.HasValue ? item.Value : 0;
                doc.RegNo = regNo;
                doc.PayCode = payCode;
                doc.FixVar = fixVar;
                doc.EffectiveDate = effectiveDate;
                doc.CalcBase = calcBase;
                doc.Value = value.HasValue ? value.Value : 0;
                doc.CostCenter = costCenter;
                doc.SubAcc = subAcc;
                doc.DocReference = docReference;
                doc.Comment = comment;
            }
            dbu.Entry<NIOCPay_PayDetail>(doc).State = System.Data.EntityState.Modified;
            dbu.NIOCPay_PayDetail.Attach(doc);                                
            dbu.SaveChanges();
        }
    }

文件实体更新和savechanges方法运行没有任何错误,但没有在数据库中运行我同时运行SQL事件探查器,我发现什么都没有发生没有sql或任何执行sql命令。我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

我找到了自己的答案:

db.NIOCPay_PayDetail.Attach(doc);
db.ChangeTracker.Entries<NIOCPay_PayDetail>().FirstOrDefault().State =
                               System.Data.EntityState.Modified;
db.SaveChanges();

现在它运作正常。

答案 1 :(得分:0)

  

文档更新和savechanges方法运行没有任何错误

是否意味着您的更改已保存到数据库?

如果是那么这意味着您的探查器设置不正确,可能是因为您在错误的数据库上运行等多种原因,您设置了一些不正确的参数等等。 如果否那么您的陈述是错误的。请诊断出问题在哪里