Я работаю над приложением MVC3 и использую Entity Framework, связанную с базой данных Oracle (11G R2).
Я сталкиваюсь с проблемой, когда пытаюсь использовать один объектный контекст внутри TransactionScope
.
Вот код:
using (TransactionScope scope = new TransactionScope())
{
using (Entities context = new Entities())
{
// Right insert
T_RIGRIGHT entity1 = new T_RIGRIGHT()
{
RIGCODE = "test1",
RIGINSERTLOGIN = "aco",
RIGINSERTDATE = DateTime.Now,
RIGUPDATELOGIN = "aco",
RIGUPDATEDATE = DateTime.Now
};
context.AddToT_RIGRIGHT(entity1);
context.SaveChanges();
// Right/Profile insert
T_RIPRIGHTPROFILE entity2 = new T_RIPRIGHTPROFILE()
{
PROID = 3,
RIGID = entity1.RIGID,
RIPINSERTLOGIN = "aco",
RIPINSERTDATE = DateTime.Now,
RIPUPDATELOGIN = "aco",
RIPUPDATEDATE = DateTime.Now
};
context.AddToT_RIPRIGHTPROFILE(entity2);
context.SaveChanges(); // SaveChanges fails due to the FK constraint on table
}
scope.Complete();
}
Позвольте мне объяснить код ...
Сначала я создаю сущность с именем entity1
как элемент T_RIGRIGHT
.
Я создаю экземпляр элемента T_RIPRIGHTPROFILE
, который использует идентификатор элемента T_RIGRIGHT, созданного ранее.
Выполнение завершается неудачно на втором context.SaveChanges()
, и исключение касается ограничения Внешнего ключа для таблицы T_RIPRIGHTPROFILE
(требуется T_RIGRIGHT
).
Надеюсь, мои объяснения достаточно ясны
Есть ли способ заставить его работать?
P.S. : Я прошу прощения за мой английский, поскольку это не мой родной язык.