Как использовать транзакции в Платформе Объекта? Я прочитал некоторые ссылки на Stackoverflow: Используя Транзакции или SaveChanges (ложь) и AcceptAllChanges ()?
НО; у меня есть 3 таблицы, таким образом, у меня есть 3 объекта:
CREATE TABLE Personel
(PersonelID integer PRIMARY KEY identity not null,
Ad varchar(30),
Soyad varchar(30),
Meslek varchar(100),
DogumTarihi datetime,
DogumYeri nvarchar(100),
PirimToplamı float);
Go
create TABLE Prim
(PrimID integer PRIMARY KEY identity not null,
PersonelID integer Foreign KEY references Personel(PersonelID),
SatisTutari int,
Prim float,
SatisTarihi Datetime);
Go
CREATE TABLE Finans
(ID integer PRIMARY KEY identity not null,
Tutar float);
Personel, Чопорный, Finans мои таблицы. Если Вы смотрите таблица Prim, Вы видите, что Чопорное значение пускает в ход значение, если я пишу текстовое поле не плавающее значение, моя транзакция должна работать.
using (TestEntities testCtx = new TestEntities())
{
using (TransactionScope scope = new TransactionScope())
{
// do something...
testCtx.Personel.SaveChanges();
// do something...
testCtx.Prim.SaveChanges();
// do something...
testCtx.Finans.SaveChanges();
scope.Complete();
success = true;
}
}
Как я могу сделать это?
Когда вы вызываете SaveChanges
, Entity Framework выполнит эти операции за одну транзакцию.
Когда вы используете класс TransactionScope
, вы говорите: «Я хочу, чтобы то, что выполняется в этом блоке, было инкапсулировано в более крупную транзакцию», что вы действительно и делаете.
Когда вы вызываете Complete
в TransactionScope
, это то, что выполняет фиксацию всех операций, инкапсулированных в транзакции, определенной TransactionScope
.
SaveChanges работает внутри транзакции.SaveChanges откатит эту транзакцию и выдаст исключение, если какой-либо из грязных объектов ObjectStateEntry не может быть сохранен.