Как узнать транзакцию в EF или LINQ to SQL? - PullRequest
0 голосов
/ 27 июня 2010

Я пытаюсь узнать объем транзакции. Все выглядит хорошо. я пытаюсь контролировать выполнение транзакции и добавляю 500 символов в NAME (обычно nvarchar (50)) Хотя приложение FormApplication не запущено (это нормально), я пытаюсь открыть таблицу, таблица пуста. Прекратите запускать форму моего приложения. я могу видеть значения таблиц. ПОЧЕМУ?

using (var ctx = new DataClassesCallCenterDataContext())
{
    using (var scope = new TransactionScope())
    {
        var test =
            from c in ctx.sp_CallCenterAnketEntity()
            select c;

        int? ID = test.ToList()[0].ID;

        var question = new QuestionsYesNo();
        question.Question = "Test3?";
        question.Date = DateTime.Now;

        ctx.QuestionsYesNos.InsertOnSubmit(question);
        ctx.SubmitChanges();

        Rehber rehber = (
            from r in ctx.Rehbers 
            where  r.ID == ID
            select r).First();

        rehber.Name =
            @"SQL Server 2005'i bir [many more characters] izleyin.";

        ctx.SubmitChanges();

        scope.Complete();
    }
}

Я пытаюсь открыть таблицу вопросов да нет. я не могу в моем приложении работает?

1 Ответ

1 голос
/ 27 июня 2010

Немного переписать, чтобы показать, как может выглядеть ваш код:

// use nested using block to decrease the indent
using (var ctx = new DataClassesCallCenterDataContext())
using (var scope = new TransactionScope())
{
    var test =
        from c in ctx.sp_CallCenterAnketEntity()
        select c;

    // if you're sure that query result will have at least one record.
    // else an exception will occur. use FirstOrDefault() if not sure.
    // and why int? - is it the type of ID. Isn't int the type?
    int? ID = test.First().ID; 

    // here you can use object initializer
    var question = new QuestionsYesNo
    {
        Question = "Test3?",
        Date = DateTime.Now
    };

    ctx.QuestionsYesNos.InsertOnSubmit(question);
    ctx.SubmitChanges();

    Rehber rehber = (
        from r in ctx.Rehbers
        where r.ID == ID
        select r).First(); // again about being sure and FirstOrDefault

    rehber.Name = @"SQL Server 2005'i bir [many more characters] izleyin.";

    ctx.SubmitChanges();    
    scope.Complete();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...