我試圖用全新生成的POCO更新my optimizedSearch記錄的所有值,而不必手動復位都在我的LINQ到SQL對象的值要做到這一點,我設置我想不是空的任何值,然後撥打:。爲什麼Linq-To-Sql抱怨當我使用context.table.attach()時記錄已經存在?
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)
Linq-to-sql拋出一個DuplicateKeyException occurred: Cannot add an entity with a key that is already in use
,這是愚蠢的,因爲我知道一個記錄存在,這就是爲什麼我使用attach()
而不是.InsertOnSubmit()
。
我怎樣才能獲得的數據更新100%與我產生,使用沒有值在DB該記錄值?
是'record'一個新的對象或對象已在數據庫中,但你改變的屬性? – Bazzz 2012-04-20 15:00:50
這是通過a = new xosPodOptimizedSearches()在代碼中實例化的新記錄;那麼調用 – KallDrexx 2012-04-20 15:02:10
不應該'context.SubmitChanges()'足以讓它在分配給'person.xosPodOptimizedSearch'之後進入數據庫嗎? http://msdn.microsoft.com/en-us/library/bb292162.aspx – Bazzz 2012-04-20 15:05:09