У меня есть таблица лиц и таблица вещей, где каждая вещь принадлежит человеку, а у каждого человека есть любимая вещь.
Persons
PersonID int <PK>
FavoriteThingID int <FK>
Things
ThingID int <PK>
PersonID int <FK>
Я хотел бы иметь возможность добавить Person и его / ее любимую Thing, а также установить Personing Thing's PersonID для нового Person в одной транзакции, без использования DTC для продвижения транзакции для распространения. Перенос операции в TransactionScope () и ручное управление подключением к сущности не работает:
ThingEntities ent = new ThingEntities();
using (TransactionScope scope = new TransactionScope())
{
ent.Connection.Open();
Thing t = ent.CreateObject<Thing>();
ent.Things.AddObject(t);
ent.SaveChanges(false);
Person p = ent.CreateObject<Person>();
t.Person = p;
ent.Persons.AddObject(p);
p.FavoriteThing = t;
ent.SaveChanges(false);
scope.Complete();
ent.AcceptAllChanges();
ent.Connection.Close();
}
В результате возникает " Невозможно определить действительный порядок для зависимых операций. " исключение при втором вызове SaveChanges ().
Есть ли простой способ сделать это?
Спасибо