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