Насколько я могу судить, EntityCollection.Attach
и EntityReference.Attach
могут создавать только те отношения, которые уже существуют в базе данных.Другими словами, если Address.EmployeeID == Employee.EmployeeID
, то будет работать следующий код:
Employee employee = context.Employees.First();
Address address = context.Addresses.First();
employee.Addresses.Attach(address);
Но если Address.EmployeeID != Employee.EmployeeID
, то код сгенерирует исключение:
Employee employee = context.Employees.First();
Address address = context.Addresses.First();
employee.Addresses.Attach(address); // System.InvalidOperationException: A
// referential integrity constraint
// violation occurred
Но согласнок примеру кода, взятому из следующих thread , EntityCollection.Attach
и EntityReference.Attach
, также можно использовать для создания отношений, которые не существуют в БД:
var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name = "Joe Bloggs" };
var myAddress = ctx.Addresses.First(a => a.PersonID != existingPerson.PersonID);
existingPerson.Addresses.Attach(myAddress);
// OR:
myAddress.PersonReference.Attach(existingPerson)
ctx.SaveChanges();
ТакПравильно ли я предположить, что EntityCollection.Attach
и EntityReference.Attach
могут создавать только те отношения, которые уже существуют в базе данных, и как пример кода, взятый из другого потока, должен вызвать исключение?
Спасибо