У меня есть две таблицы «Продукты» и «Категории» со связями «многие ко многим». Я пытаюсь скопировать категории, связанные с одним продуктом (OriginalProduct), с другим продуктом (newProduct). Проблема в том, что когда я выполняю метод SaveChanges()
, я не только получаю записи в своей таблице ссылок, но и создаю еще одну копию категорий в таблице категорий. Я пробовал это разными способами, но вот последняя пара, которую я пытался:
' Copy Product/Categories
For Each oneProdCategory In OriginalProduct.Categories
Dim relatedCategory = _productContext.GetObjectByKey(New EntityKey ("ProductInfoEntities.Categories", "RecordId", oneProdCategory.RecordId))
Dim newCategory As New Category
With newCategory
.Description = relatedCategory.Description
.isActive = relatedCategory.IsActive
.RecordId = relatedCategory.RecordId
End With
newProduct.Categories.Add(newCategory)
Next
Эта попытка приводит к созданию обеих записей таблицы связи (что хорошо), но также создает копии всех категорий (не очень хорошо)
' Copy Product/Categories
For Each oneProdCategory In OriginalProduct.Categories
Dim relatedCategory = _productContext.GetObjectByKey(New EntityKey ("ProductInfoEntities.Categories", "RecordId", oneProdCategory.RecordId))
newProduct.Categories.Add(relatedCategory)
Next
Это приводит к следующей ошибке:
"На объект сущности нельзя ссылаться несколькими экземплярами
IEntityChangeTracker. "
Редактировать
For Each oneProdCategory In OriginalProduct.Categories
newProduct.Categories.Add(oneProdCategory)
Next
Private Sub tsBtnSave_Click(sender As System.Object, e As System.EventArgs) Handles tsBtnSave.Click
_productContext.SaveChanges()
If _formMode = DataFormAction.Insert Or _formMode = DataFormAction.Duplicate Then
Me.Close()
End If
End Sub