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

نام تاپیک: Dispose کردن کانکشن ایجاد شده

  1. #1

    Dispose کردن کانکشن ایجاد شده

    سلام دوستان..
    به صورت پیش فرض وقتی کنترلر Scafold میکنیم متد زیر در آخر هر کنترل پیاده سازی میشه


    protected override void Dispose(bool disposing)
    {
    if (disposing)
    {
    db.Dispose();
    }
    base.Dispose(disposing);
    }


    حالا وقتی BreakPoint میذاریم در هر اجرا وارد این متد Dispose میشه و پارامتر disposing که داره میگیره همیشه True هست...پس کی False میشه؟
    حالا من یه پروژه دارم وقتی برنامه رو اجرا میکنم این متد دوبار اجرا میشه.. اصلا رو چه حسابی این متد اجرا میشه؟

  2. #2

    نقل قول: Dispose کردن کانکشن ایجاد شده

    کمی عجیبه چون من به خاطر ندارم تا به حال این متد در Scaffold ساخته شده باشه.

    به طور کلی هر کنترلر بعد از تولید Response پاکسازی میشه و همیشه Dispose اتفاق میوفته. همینکار در EF برای دیتابیس هم میوفته و نیازی به این متد ندارید. مگر اینکه به دلیلی خودتون برای دیتابیس Connection ایجاد کرده باشید.

    وقتی به صورت دستی Connection ایجاد می کنید وظیفه ی پاکسازی یا Dispose به عهده ی خود شماست. متد Dispose در کنترلر مادر تعریف شده و همیشه هم اجرا میشه.

    همه ی کارهای یک کنترلر روی HttpContext انجام میشه. از اونجایی که داده های HttpContext برای هر درخواست بازسازی میشه پس معنی نداره که کنترلر رو حفظ کنیم. همیشه باید Dispose انجام بشه.

    اگر سعی کنید یک کنترلر رو به صورت Singleton بارگذاری کنید به مشکل برخورد میکنید.

  3. #3

    نقل قول: Dispose کردن کانکشن ایجاد شده

    ممنون از شما...
    گر اینکه به دلیلی خودتون برای دیتابیس Connection ایجاد کرده باشید.
    منظورتون از این جمله یعنی چی؟ من به این صورت کار میکنم که توی هر کنترلر ApplicationdbContext رو New میکنم.. بعدش همین Context رو از طریق سازنده کلاس به لایه سرویس پاس میدم...بعدش از لایه سرویس به لایه Repository پاس میدم و در انتها از لایه ریپازیتوری به لایه BaseRepository که یه کلاس جنریک هست و T دریافت میکنه پاس میدم..
    این روش باعث میشه Context برنامه من در سطح هر کنترلر یکی باشه و با یک Transaction کل عملیات رو انجام بدم که اگه خطایی اتفاق افتاد Rol back بشه..

    حالا الان اینجا خودم کانکشن رو ایجاد کردم یا Ef مدیریت میکنه؟

  4. #4

    نقل قول: Dispose کردن کانکشن ایجاد شده

    در اینجا EF کانکشن رو مدیریت میکنه.

    هر وقت در پروژه از دستور


    MyDbContext.Database.Connection.Open()


    استفاده کنید یعنی خودتون دستی کانکشن رو ایجاد کردید و باید خودتون هم Close کنید.

    کل این پاس دادن هارو می توانید با یک سیستم تزریق وابستگی در یک خط انجام دهید.

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

  1. سوال: ثابت کردن شکل ایجاد شده
    نوشته شده توسط babolsarcity در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 29 اردیبهشت 1389, 13:55 عصر
  2. سوال: مشتق کردن page ایجاد شده از یک کلاس
    نوشته شده توسط rana-writes در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: جمعه 20 فروردین 1389, 13:01 عصر
  3. پاسخ: 3
    آخرین پست: چهارشنبه 28 بهمن 1388, 10:13 صبح
  4. بروزرسانی کردن تغییرات ایجاد شده در sql در داخل delphi
    نوشته شده توسط iamelaheh در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 0
    آخرین پست: دوشنبه 08 مهر 1387, 13:06 عصر
  5. کانکشن ایجاد شده با کد را چطور به کریستال بایند کنم؟
    نوشته شده توسط reza_rad در بخش گزارش سازی با Crystal Report
    پاسخ: 6
    آخرین پست: جمعه 15 اردیبهشت 1385, 02:25 صبح

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

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