نمایش نتایج 1 تا 6 از 6

نام تاپیک: مشکل در استفاده از ترانزکشن (Transaction)

  1. #1

    مشکل در استفاده از ترانزکشن (Transaction)

    سلام . من یک آرایه دارم که ردیف به ردیف داخل دیتابیس ثبت میشه . میخام موقه ثبت از ترانزکشن استفاده کنم. میخام اگر یکیش ثبت نشد بقیش هم ثبت نشه.
    کد ثبت هم به صورت زیر می باشد :


    private void ts_save_Click(object sender, EventArgs e)
    {
    using (TransactionScope ts = new TransactionScope())
    {
    try
    {
    int CountEdit = 0, CountNew = 0;
    int r = 0;
    foreach (var item in imageListView1.Items)
    {
    if (ArgDocPicsScan[r].TypeDoc == 0)//درصورتیکه در حالت جدید باشه
    {

    string LastDoc_id = PatientDocumentManager.InsertDocPatient(ArgDocPics Scan[r].DoctypeId, patid, PuplicFunc.ImageToByte(item.GetImage()), r.ToString(), ".jpg", '1', ArgDocPicsScan[r].DescDoc, DateTime.Now, frmSplash.UserName, 0);
    ArgDocPicsScan[r].TypeDoc = 1;

    LDEArchiveDataContext db = new LDEArchiveDataContext();
    ArgDocPicsScan[r].DocId = LastDoc_id;// db.Tbl_Documents.Select(q => q.Doc_ID).Max().ToString();
    item.Text = ArgDocPicsScan[r].DocId.ToString() + ".jpg";
    CountNew++;
    }
    r++;

    }

    FarsiMessageBox.FarsiMessage.Msg("ثبت انجام شد" + Environment.NewLine + " تعداد اسناد جدید ثبت شده : " + CountNew.ToString() + Environment.NewLine + " تعداد اسناد ویرایش شده : " + CountEdit.ToString());
    }
    catch (Exception ex)
    {

    FarsiMessageBox.FarsiMessage.MsgError("ثبت انجام نشد " + Environment.NewLine + ex.Message.ToString()) ;

    Transaction.Current.Rollback();
    }
    }


    }









    تابع مربوط به ثبت :



    public static string InsertDocPatient(int DoctypeID,long PatId,byte[] Data,string DocFilename,string Extension,char Issheet,string DocDesc,
    DateTime DoccreateDate, string CrateuserName,byte Zero)
    {

    LDEArchiveDataContext db = new LDEArchiveDataContext();
    Tbl_Document PatDoc = new Tbl_Document();

    PatDoc.Doc_TypeID = DoctypeID ;
    PatDoc.Doc_PatID = PatId;
    PatDoc.Doc_Data = Data;
    PatDoc.Doc_FileName = DocFilename;
    PatDoc.Doc_Extension = Extension;
    PatDoc.Doc_IsSheet = Issheet;
    PatDoc.Doc_Decsription = DocDesc;
    PatDoc.Doc_CreateDate = DoccreateDate;
    PatDoc.Doc_CreateUserName = CrateuserName;
    db.Tbl_Documents.InsertOnSubmit(PatDoc);
    db.SubmitChanges();
    return (PatDoc.Doc_ID.ToString());
    }





    بدون استفاده از ترانزکشن ثبت انجام میشه و مشکل نداره .
    ولی وقتی از ترانزکشن استفاده میکنم حلقه بار اول دستور insert رو رد میکنه و بار دوم وارد cath میشه و خطای زیر رو میده :

    MSDTC on server 'PC1' is unavailable.


    ممنون میشم راهنمایی کنید ..

  2. #2
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: مشکل در استفاده از ترانزکشن (Transaction)

    دوست گرامی وقتی شما از LINQ to SQL استفاده کردی تمام رکورد ها رو به Context اضافه کن و فقط با یک بار فرا خوانی db.SubmitChanges() در خارج از حلقه تمام رکورد های اضافه شده به Context یکباره در دیتابیس نوشته میشود.اگرم خطایی در جایی رخ دهد هیچکدام از رکورد ها در دیتابیس نوشته نمیشوند.همانند ترانزاکشن سکوپ .مشابه کد زیر میتونی پیاده سازی کنی البته مقادیر رو اصلاح کنید


    LDEArchiveDataContext db = new LDEArchiveDataContext();
    foreach (var item in imageListView1.Items)
    {
    var PatDoc = new Tbl_Document();

    PatDoc.Doc_TypeID =//مقدار;
    PatDoc.Doc_PatID = //مقدار;
    PatDoc.Doc_Data = //مقدار;
    PatDoc.Doc_FileName = //مقدار;
    PatDoc.Doc_Extension = //مقدار;
    PatDoc.Doc_IsSheet = //مقدار;
    PatDoc.Doc_Decsription = //مقدار;
    PatDoc.Doc_CreateDate = //مقدار;
    PatDoc.Doc_CreateUserName = //مقدار;
    db.Tbl_Documents.Add(PatDoc);

    }
    db.SubmitChanges();

    First,solve the problem then write the code

  3. #3

    نقل قول: مشکل در استفاده از ترانزکشن (Transaction)

    ممنون . ولی با این روش فانکشن InsertDocPatient (کلاس) میره کنار ؟ اگر چند لایه میخاستم بنویسم قسمت مربوط به ثبتش چی میشد

  4. #4
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: مشکل در استفاده از ترانزکشن (Transaction)

    بله یه کلاس کمتر کد مینویسی. با تکنولوژی های LINQ To SQL ویا EntityFramework سه لایه نوشتن فقط نوشتن کد اضافی به همراه داره همین
    First,solve the problem then write the code

  5. #5

    نقل قول: مشکل در استفاده از ترانزکشن (Transaction)

    دوست عزیز . این قسمت رو چرا من ندارم ؟ فضای نامی داره ؟
    db.Tbl_Documents.Add(PatDoc)

    Add رو نداره

  6. #6
    مدیر بخش آواتار ژیار رحیمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تهران
    پست
    1,095

    نقل قول: مشکل در استفاده از ترانزکشن (Transaction)

    عذر خواهی میکنم دوست گرامی Add متد Ef هست از متد InsertOnSubmit که مربوط به LINQ TO SQL هست استفاده کنید
    First,solve the problem then write the code

تاپیک های مشابه

  1. سوال: مشکل در استفاده از تراکنش ( Transaction ) در سی شارپ ( #C )
    نوشته شده توسط forodo در بخش C#‎‎
    پاسخ: 15
    آخرین پست: سه شنبه 14 بهمن 1393, 07:31 صبح
  2. مشکل در استفاده از transaction scope روی سرور
    نوشته شده توسط soroush.elec در بخش ASP.NET MVC
    پاسخ: 0
    آخرین پست: جمعه 27 تیر 1393, 19:14 عصر
  3. مشکل در استفاده از Event Onload
    نوشته شده توسط LeilaAsgari در بخش طراحی وب (Web Design)
    پاسخ: 2
    آخرین پست: یک شنبه 30 فروردین 1383, 07:55 صبح
  4. مشکل در استفاده از sql
    نوشته شده توسط ahmad sajjad در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 1
    آخرین پست: سه شنبه 11 فروردین 1383, 19:01 عصر
  5. مشکل در استفاده از DeleteFile
    نوشته شده توسط mostafa612003 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: شنبه 20 اردیبهشت 1382, 12:53 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •