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

نام تاپیک: استفاده از تراکنش در مدل Database first

  1. #1
    کاربر دائمی آواتار winner1
    تاریخ عضویت
    تیر 1392
    محل زندگی
    خلخال
    پست
    738

    استفاده از تراکنش در مدل Database first

    سلام دوستان من از Ef دیابیس فیرست استفاده میکنم از کد زیرم برای تراکنش استفاده مینکم ولی جواب نداد لطفا راهنماییم کنین

    public bool Define(Customer reciver, payment payment, Customer sender, ReciveMoney reciveMoney, ReciveMoney pReciveMoney)
    {
    SqlConnection sc = new SqlConnection(App._ConnectionString);
    sc.Open();
    using (var trans = sc.BeginTransaction())
    {
    try
    {
    if (reciver.TypeOfCustomerId == 3)
    {
    this.ExchangeDatabase.Customer.Add(reciver);
    payment.Customer = reciver;
    this.ExchangeDatabase.payment.Add(payment);
    }
    if (sender.TypeOfCustomerId == 3)
    {
    this.ExchangeDatabase.Customer.Add(sender);
    reciveMoney.Customer = sender;
    this.ExchangeDatabase.ReciveMoney.Add(reciveMoney) ;
    if (pReciveMoney != null)
    {
    pReciveMoney.Customer = sender;
    this.ExchangeDatabase.ReciveMoney.Add(pReciveMoney );
    }
    }
    this.ExchangeDatabase.SaveChanges();
    this.data.SenderId = sender.CustumerId;
    this.data.ReciverId = reciver.CustumerId;
    this.ExchangeDatabase.Transfer.Add(this.data);
    this.ExchangeDatabase.SaveChanges();
    trans.Commit();
    }
    catch
    {
    trans.Rollback();
    return false;
    }
    finally
    {
    sc.Close();
    }
    return true;
    }
    }



  2. #2
    کاربر دائمی آواتار winner1
    تاریخ عضویت
    تیر 1392
    محل زندگی
    خلخال
    پست
    738

    نقل قول: استفاده از تراکنش در مدل Database first

    دوسان لطفا راهنمایی کنین مهمه

  3. #3

    نقل قول: استفاده از تراکنش در مدل Database first

    این کانکشنی که ساختی هیچ ربطی به شئ Context شما نداره و به تبع هیچ نتیجه ای در بر نخواهد داشت. باید تراکنش رو از شئ context ایجاد کنی. به صورت زیر اصلاح کن. به طریقی بنویس که بتونی تراکنش رو در finally از بین ببری و همچنین return رو به انتهای متد انتقال بده تا finally اجرا بشه.

    public bool Define(Customer reciver, payment payment, Customer sender, ReciveMoney reciveMoney, ReciveMoney pReciveMoney)
    {
    DbContextTransaction transaction = null;
    bool flag = false;
    try
    {
    transaction = this.ExchangeDatabase.Database.BeginTransaction();
    // ...
    this.ExchangeDatabase.SaveChanges();
    transaction.Commit();
    flag = true;
    }
    catch
    {
    if (transaction != null) transaction.Rollback();
    }
    finally
    {
    if (transaction != null) transaction.Dispose();
    }
    return flag;
    }

  4. #4
    کاربر دائمی آواتار winner1
    تاریخ عضویت
    تیر 1392
    محل زندگی
    خلخال
    پست
    738

    نقل قول: استفاده از تراکنش در مدل Database first

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    این کانکشنی که ساختی هیچ ربطی به شئ Context شما نداره و به تبع هیچ نتیجه ای در بر نخواهد داشت. باید تراکنش رو از شئ context ایجاد کنی. به صورت زیر اصلاح کن. به طریقی بنویس که بتونی تراکنش رو در finally از بین ببری و همچنین return رو به انتهای متد انتقال بده تا finally اجرا بشه.

    public bool Define(Customer reciver, payment payment, Customer sender, ReciveMoney reciveMoney, ReciveMoney pReciveMoney)
    {
    DbContextTransaction transaction = null;
    bool flag = false;
    try
    {
    transaction = this.ExchangeDatabase.Database.BeginTransaction();
    // ...
    this.ExchangeDatabase.SaveChanges();
    transaction.Commit();
    flag = true;
    }
    catch
    {
    if (transaction != null) transaction.Rollback();
    }
    finally
    {
    if (transaction != null) transaction.Dispose();
    }
    return flag;
    }
    مشکل اینه متد BeginTransaction() رو دیتابیس نداره
    Error 1 'System.Data.Entity.Database' does not contain a definition for 'BeginTransaction' and no extension method 'BeginTransaction' accepting a first argument of type 'System.Data.Entity.Database' could be found (are you missing a using directive or an assembly reference?) E:\Programming\Work\Exchange\Exchange\Class\Managm ent\MTransfer.cs 59 66 Exchange

  5. #5

    نقل قول: استفاده از تراکنش در مدل Database first

    چون ورژن مدل EF شما پایین بود این خطا رو میده. احتمالا به جای پراپرتی Database از طریق پراپرتی Connection باید اقدام کنی

    public bool Define(Customer reciver, payment payment, Customer sender, ReciveMoney reciveMoney, ReciveMoney pReciveMoney)
    {
    IDbTransaction transaction = null;
    bool flag = false;
    try
    {
    this.ExchangeDatabase.Connection.Open();
    transaction = this.ExchangeDatabase.Connection.BeginTransaction( );
    // ...
    this.ExchangeDatabase.SaveChanges();
    transaction.Commit();
    flag = true;
    }
    catch
    {
    if (transaction != null) transaction.Rollback();
    }
    finally
    {
    if (transaction != null) transaction.Dispose();
    }
    return flag;
    }

  6. #6
    کاربر دائمی آواتار winner1
    تاریخ عضویت
    تیر 1392
    محل زندگی
    خلخال
    پست
    738

    نقل قول: استفاده از تراکنش در مدل Database first

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    چون ورژن مدل EF شما پایین بود این خطا رو میده. احتمالا به جای پراپرتی Database از طریق پراپرتی Connection باید اقدام کنی

    public bool Define(Customer reciver, payment payment, Customer sender, ReciveMoney reciveMoney, ReciveMoney pReciveMoney)
    {
    IDbTransaction transaction = null;
    bool flag = false;
    try
    {
    this.ExchangeDatabase.Connection.Open();
    transaction = this.ExchangeDatabase.Connection.BeginTransaction( );
    // ...
    this.ExchangeDatabase.SaveChanges();
    transaction.Commit();
    flag = true;
    }
    catch
    {
    if (transaction != null) transaction.Rollback();
    }
    finally
    {
    if (transaction != null) transaction.Dispose();
    }
    return flag;
    }
    این روشش هم اسفاده کرده بودم که ران تایم داد که sql این ترنس اکشن رو ساپورت نمیکنه

  7. #7

    نقل قول: استفاده از تراکنش در مدل Database first

    اگر میتونی یک پروژه دیگه ایجاد کن و اگر خطا داد پروژه رو برام بفرست. یک عکس هم از خطا بزار.
    دات نت و ef ورژن چند استفاده میکنی؟

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

    نقل قول: استفاده از تراکنش در مدل Database first

    سلام دوست گرامی خود متد SaveChanges کل تغییرات در Contextرو بصورت single transaction در دیتابیس ذخیره میکند .لازم به نوشتن کد اضافه نیست.
    First,solve the problem then write the code

  9. #9
    کاربر دائمی آواتار winner1
    تاریخ عضویت
    تیر 1392
    محل زندگی
    خلخال
    پست
    738

    نقل قول: استفاده از تراکنش در مدل Database first

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    سلام دوست گرامی خود متد SaveChanges کل تغییرات در Contextرو بصورت single transaction در دیتابیس ذخیره میکند .لازم به نوشتن کد اضافه نیست.
    کد من رو ببینین نیازه که Customer جدا ثب شه تا از ایدیش استفاده کنم

  10. #10
    کاربر دائمی آواتار winner1
    تاریخ عضویت
    تیر 1392
    محل زندگی
    خلخال
    پست
    738

    نقل قول: استفاده از تراکنش در مدل Database first

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    اگر میتونی یک پروژه دیگه ایجاد کن و اگر خطا داد پروژه رو برام بفرست. یک عکس هم از خطا بزار.
    دات نت و ef ورژن چند استفاده میکنی؟
    دات نت 4
    vs 2012
    01-11-1394 10-43-22 ب-ظ.jpg

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

    نقل قول: استفاده از تراکنش در مدل Database first

    روش کد نویسی به نظر من صحیح نمیباشد.شما از جدول Transfer به جدول Customer ارتباط ارتباط برقرار کردی؟دوست گرامی یه توضیح در مورد تابع نوشته شده بده تا ببینم دقیقا چه عملیاتی رو میخوای ثبت کنی به اضافه ازتباط بین جداول POCO انتی رو در مورد این تابع بزار تا راهنمایی لازم انجام شود
    First,solve the problem then write the code

  12. #12
    کاربر دائمی آواتار winner1
    تاریخ عضویت
    تیر 1392
    محل زندگی
    خلخال
    پست
    738

    نقل قول: استفاده از تراکنش در مدل Database first

    نقل قول نوشته شده توسط ژیار رحیمی مشاهده تاپیک
    روش کد نویسی به نظر من صحیح نمیباشد.شما از جدول Transfer به جدول Customer ارتباط ارتباط برقرار کردی؟دوست گرامی یه توضیح در مورد تابع نوشته شده بده تا ببینم دقیقا چه عملیاتی رو میخوای ثبت کنی به اضافه ازتباط بین جداول POCO انتی رو در مورد این تابع بزار تا راهنمایی لازم انجام شود
    ما سه نو مشتری داریم که نوع سوم رهگذره که فقط یک بار میاد اگه کاربر اسم جدید وارد کرد باید برنامه یه مشتری همراه با transfer ثبت کنه با نوع سوم بعد ایدیش رو بده به ترنسفر

  13. #13

    نقل قول: استفاده از تراکنش در مدل Database first

    آقای ژیار رحیمی درست میگن. اگر ارتباط برقرار کرده باشی نیازی نیست خودت کلیدخارجی رو مقدار بدی. مثل کاری در خط زیر انجام دادی
    payment.Customer = reciver;

  14. #14
    کاربر دائمی آواتار winner1
    تاریخ عضویت
    تیر 1392
    محل زندگی
    خلخال
    پست
    738

    نقل قول: استفاده از تراکنش در مدل Database first

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    آقای ژیار رحیمی درست میگن. اگر ارتباط برقرار کرده باشی نیازی نیست خودت کلیدخارجی رو مقدار بدی. مثل کاری در خط زیر انجام دادی
    payment.Customer = reciver;
    اخه ممکنه کاستومر جدید باشه و تو اون لحظه تعریف بشه

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

  1. استفاده از تراکنش در سایت
    نوشته شده توسط rezaricky در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 02 شهریور 1392, 23:41 عصر
  2. استفاده از تراکنش در سی شارپ بصورت تو در تو
    نوشته شده توسط narges_j در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 7
    آخرین پست: جمعه 01 شهریور 1392, 19:14 عصر
  3. سوال: عمل نکردن Client Validation با استفاده از bool در مدل
    نوشته شده توسط IranVisual در بخش ASP.NET MVC
    پاسخ: 4
    آخرین پست: یک شنبه 23 تیر 1392, 15:39 عصر
  4. اخطار Security Warning در هنگام استفاده از روش Entity Framework Database First
    نوشته شده توسط Mr Code در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 0
    آخرین پست: چهارشنبه 18 بهمن 1391, 13:44 عصر

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

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