Как создать транзакцию LINQ to SQL?

У меня есть фрагмент кода, который включает несколько вставок, но мне нужно выполнить метод submitchanges, прежде чем я закончу вставлять в другие таблицы, чтобы я мог получить Id. Я искал через Интернет и не мог найти, как создать транзакцию в linq to sql. Я добавил комментарии в код, где я хочу, чтобы транзакция состоялась.

    var created = false;
    try
    {
        var newCharacter = new Character();
        newCharacter.characterName = chracterName;
        newCharacter.characterLevel = 1;
        newCharacter.characterExperience = 0;
        newCharacter.userUsername = userUsername;
        newCharacter.characterClassID = ccslst[0].characterClassID;
        //Open transaction


            ydc.Characters.InsertOnSubmit(newCharacter);
            ydc.SubmitChanges();

            foreach (var ccs in ccslst)
            {
                var cs = new CharacterStat();
                cs.statId = ccs.statID;                        
                cs.statValue = ccs.statValue;
                cs.characterID = newCharacter.characterID;
                ydc.CharacterStats.InsertOnSubmit(cs);
            }                    


            var ccblst = ydc.ClassBodies.Where(cb => cb.characterClassID == newCharacter.characterClassID);
            foreach (var ccb in ccblst)
            {
                var charBody = new CharacterBody();
                charBody.bodyId = ccb.bodyId;
                charBody.bodyPartId = ccb.bodyPartId;
                charBody.characterID = newCharacter.characterID;
                ydc.CharacterBodies.InsertOnSubmit(charBody);
            }
            ydc.SubmitChanges();      
            created = true;
        //Commit transaction
        }
        catch (Exception ex)
        {
            created = false;
            //transaction Rollback;                    
        }
        return created;

РЕДАКТИРОВАТЬ: забыл упомянуть, что YDC - мой текстовый текст

66 голосов | спросил Drahcir 16 PMpThu, 16 Apr 2009 15:54:49 +040054Thursday 2009, 15:54:49

1 ответ


0

Вам не нужно делать явную реализацию транзакций при использовании LINQ to SQL. Все операции с БД по умолчанию заключены в транзакцию.

Пример:

AppDataContext db = new AppDataContext();

<In memory operation 1 on db>
<In memory operation 2 on db>
<In memory operation 3 on db>
<In memory operation 4 on db>

db.SubmitChanges();

Все операции между инициализацией db DataContext и db.SubmitChanges () обернуты вокруг транзакции базы данных с помощью .Net, обеспечивающей согласованность вашей базы данных и поддержание целостности свойств в разных таблицах.

Прочитайте статью Скотта Гатри здесь : - http://weblogs.asp.net /scottgu/archive/2007/07/11/linq-to-sql-part-4-updating-our-database.aspx

ответил this. __curious_geek 16 PMpThu, 16 Apr 2009 16:04:48 +040004Thursday 2009, 16:04:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132