切换父项时LinqToSql更新问题

时间:2009-09-21 10:38:15

标签: linq linq-to-sql

我正在尝试使用LinqToSQL执行直接更新,但无法让它工作。

这是数据模型:有 timesheet_entry 客户。一个客户有许多 timesheet_entries 。这是一个简单的外键关系。

如果我正在编辑现有的timesheet_entry,如果我更改了customer_id,我会收到异常。

这是我对代码的尝试。有人可以帮助我吗?

        internal void CommitChangesToEntry(Timesheet_Entry entry)
        {

            Timesheet_Entry latest = (from e
                                      in m_dataContext.Timesheet_Entries
                                      where e.Timesheet_Entry_ID == entry.Timesheet_Entry_ID
                                      select e).First();


            latest.Entry_Start_DateTime = entry.Entry_Start_DateTime;
            latest.Entry_End_DateTime = entry.Entry_End_DateTime;
            latest.Task_Description = entry.Task_Description;

            // Comment out this line of code and it
            // doesn't throw an exception
            latest.Customer_ID = entry.Customer_ID;

            m_dataContext.SubmitChanges(); // This throws a NotSupportedException

        }

错误是:“尝试附加或添加一个非新的实体,可能是从另一个DataContext加载的。这是不受支持的。”

1 个答案:

答案 0 :(得分:0)

你有没有理由不使用Attach方法?如下所示:

m_dataContext.Timesheet_Entries.Attach(entry);
m_dataContext.SubmitChanges();