Вы должны прикрепить Customer
отдельно и установить его состояние, прежде чем подключить его к добавленному WorkOrder
:
Using trans As New System.Transactions.TransactionScope()
Using dcLAIT As LAITEntities = New LAITEntities
-- Insert Computer
vWorkOrder.Computer = vComputer
-- Insert WorkOrder
dcLAIT.WorkOrder.AddObject(vWorkOrder)
dcLAIT.Customer.Attach(vCustomer)
-- Update Customer (Apply existing Customer)
dcLAIT.ObjectStateManager.ChangeObjectState(vCustomer, EntityState.Modified)
vWorkOrder.Customer = vCustomer
dcLAIT.SaveChanges()
trans.Complete()
End Using
End Using
Кстати.SaveChanges
использует транзакцию для внутреннего использования, поэтому, если вы не хотите принудительно установить уровень изоляции Serialized или не собираетесь вызывать несколько SaveChanges
в этой области, TransactionScope
является избыточным.