我正在尝试使用全新生成的 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% 更新数据,而不使用该记录的数据库中的任何值?