0

我正在尝试使用全新生成的 POCO 更新我的优化搜索记录的所有值,而无需手动重置我的 Linq-to-sql 对象中的所有值。为此,我设置了我想要不为空的任何值,然后调用:

        if (person.xosPodOptimizedSearch == null)
        {
            person.xosPodOptimizedSearch = record;
        }
        else
        {
            context.xosPodOptimizedSearches.Attach(record, true);
            context.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, record);
        }

此代码的目的是,如果我的person记录没有xosPodOptimizedSearch记录,则添加它。如果这个人已经有一个,我希望它更新为我刚刚创建的 POCO 中的任何值。

但是,当这个 runns 和.attach(record, true)is run Linq-to-sql 抛出一个DuplicateKeyException occurred: Cannot add an entity with a key that is already in use,这是愚蠢的,因为我知道存在一条记录,这就是为什么我attach()首先使用而不是.InsertOnSubmit().

如何使用我生成的值来 100% 更新数据,而不使用该记录的数据库中的任何值?

4

1 回答 1

0

没关系,这是我的错误。我对 Linq-to-sql 感到困惑,因为在我的代码前面有一个杂散record.xosPerson = person;调用,所以它只认为人员记录与新记录相关联而忘记了旧记录的存在。

于 2012-04-20T15:12:18.760 回答