更新SubmitChanges() - 不更新

时间:2009-04-24 05:55:24

标签: linq linq-to-sql

使用此代码,我的数据库没有任何变化。 当运行上面的代码时,不再创建新条目,也不再更新条目。

public void UpdateCallback(callback cb_)
    {
        callback call = context.callbacks.Single(c => c.callbackID == cb_.callbackID);

            //call.callbackID = cb_.callbackID;
            call.status = cb_.status;
            call.contactName = cb_.contactName;
            call.company = cb_.company;
            call.phone = cb_.phone;
            call.calledDate = cb_.calledDate;
            call.callback1 = cb_.callback1;
            call.notes = cb_.notes;

        try
        {
            context.SubmitChanges();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }

2 个答案:

答案 0 :(得分:4)

post与您的相似。

在他的情况下,更新不起作用,因为该表没有主键。

您是否已验证CallbackId是否已在数据库中定义为PK?

答案 1 :(得分:0)

没有什么能立刻向我跳出来。我发现使用DataContext的Log属性来查看正在生成的SQL很有用。

请参阅http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.log.aspx

然后,您可以使用类似下面的代码在调试时将SQL输出到Visual Studio调试窗口。

/// <summary>
/// Implementation of a <see cref="TextWriter"/> that outputs to the debug window
/// </summary>
public class DebugTextWriter : TextWriter
{
    public override void Write(char[] buffer, int index, int count)
    {
        System.Diagnostics.Debug.Write(new string(buffer, index, count));
    }

    public override void Write(string value)
    {
        System.Diagnostics.Debug.Write(value);
    }

    public override Encoding Encoding
    {
        get { return System.Text.Encoding.Default; }
    }
}