У меня проблемы с вставкой нового объекта LinqToSql поверх WCF.
То, что я делаю, это просто отправка пакета заказов в сервис. Внутри партии находятся Заказы, которые уже были отправлены ранее. Когда я делаю
data.batches.InsertOnSubmit(newbatch)
Я получаю ошибку SQL:
"Violation of PRIMARY KEY constraint 'PK_HTOrder'. Cannot insert duplicate key in object 'dbo.HTOrder'. The statement has been terminated."
Вот код, в который вставляется пакет (obj):
Dim tableproperty As PropertyInfo = dataProperties.Find(Function(p As PropertyInfo) (p.PropertyType.FullName.Contains("[" + obj.GetType.FullName + ",")))
Dim tableMethod As MethodInfo = tableproperty.GetGetMethod()
Dim tab As Object = tableMethod.Invoke(data, New Object() {})
tab.GetType.GetMethod("InsertOnSubmit", New Type() {obj.GetType}).Invoke(tab, New Object() {obj})
data.SubmitChanges(ConflictMode.FailOnFirstConflict)
Dim checkMatch As Object = GetMatchingEntities(obj, data).SingleOrDefault
If checkMatch Is Nothing Then Throw New UpdateNotVerfiedExecption(obj)
Return checkMatch
Я пытался сначала присоединить родителя к контексту, но он, естественно, сказал мне, что он существует, когда я попытался вставить его сразу после. Вложение дочерних заказов, похоже, тоже не помогает.
Есть предложения?