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

نام تاپیک: ارور constructor در AddDbContextPool

  1. #1

    ارور constructor در AddDbContextPool

    سلام

    من میخام بجای adddbcontext از AddDbContextPool استفاده کنم . اما ارور زیر رو دارم . ممنون میشم راهنمایی کنید .

    DataContext :

        public class DataContext : IdentityDbContext<User>    {
    public DataContext(DbContextOptions options) : base(options)
    {
    }


    public DataContext()
    {
    }


    protected override void OnModelCreating(ModelBuilder builder)
    {
    base.OnModelCreating(builder);
    builder.Entity<User>().ToTable("Users");
    }
    }




    startup :

    services.AddDbContextPool<DataContext>(options =>
    options.UseSqlServer(connection)));


    ارور :

    InvalidOperationException: The DbContext of type 'DataContext' cannot be pooled because it does not have a single public constructor accepting a single parameter of type DbContextOptions.

  2. #2

    نقل قول: ارور constructor در AddDbContextPool

    Constructor ای که بدون پارامتر هست رو حذف کنید.

  3. #3

    نقل قول: ارور constructor در AddDbContextPool

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

     public class MenuRepository : IDisposable    {
    private DataContext database = null;
    public MenuRepository()
    {
    database = new DataContext();
    }


    اینم ارور :

    There is no argument given that corresponds to the required formal parameter 'options' of 'DataContext.DataContext(DbContextOptions)'

  4. #4

    نقل قول: ارور constructor در AddDbContextPool

    اول اینکه شما نیاز به IDisposable ندارید. دوم اینکه باید از تزریق وابستگی استفاده کنید.


    public class MenuRepository : IDisposable {
    private DataContext _database;
    public MenuRepository(DataContext database)
    {
    _database=database;
    }

    }


    ضمن اینکه باید در Startup سرویس را اضافه کنید.


    public void ConfigureServices(IServiceCollection services)
    {
    services.AddTransient<MenuRepository, MenuRepository>();
    }


    استفاده از AddDbContextPool هم هیچ فایده ای در این پروژه نداره و فقط کار شمارو پیچیده تر میکنه. از همون AddDbContext استفاده کنید.

  5. #5

    نقل قول: ارور constructor در AddDbContextPool

    بسیار ممنون از پاسختون .
    چرا نیازی به IDisposable نیست ؟؟من تازه میخام با ریپازیتوری کار کنم و چندتا مطلب خوندم همه مبنی بر اینکه اینترفیسی بسازیم و ریپازیتوریها رو از اون مشتق کنیم و این اینترفیس از idisposable ارث ببره ویه سری مزایا برای استفاده از اون بر شمرده بودن که در سرعت و کارایی تاثیر گذار هست

  6. #6

    نقل قول: ارور constructor در AddDbContextPool

    اول اینکه 60 تا 70 درصد سایتها نیازی به لایه ی ریپوزیتوری ندارن. صرف اینکه یک الگویی وجود داره مجبور نیستید پیادش کنید.

    چرا نیازی به IDisposable نیست ؟
    در دات نت Garbage Collection (تخلیه ی حافظه)همیشه انجام میشه. اما اینکه چه زمانی انجام میشه دست شما نیست. دست خود فریم ورکه. وقتی از دستور IDisposable استفاده می کنید یعنی قصد دارید خودتون پاکسازی حافظه رو کنترل کنید. اگر شما نمی دونید که کی و کجا باید حافظه رو خالی کنید بهتره این کار رو به خود فریم ورک بسپارید. خالی کردن بی مورد حافظه بازدهی سیستم رو کم میکنه.

    در بعضی موارد عدم استفاده از IDisposable باعث ایجاد Memory Leak میشه و حافظه در زمان درست تخلیه نمیشه. در نتیجه پروژه ی شما بی مورد کند میشه. Memory Leak در بسیاری از پروژه ها خودش رو نشون نمیده. فقط در ترافیک بالا هست که ناگهان اثر میکنه. اینکه شما از روز اول پروژه دنبال جلوگیری از Memory Leak باشید خوبه ولی واقعیت اینه که ممکنه هیچوقت به اون حالت نرسید و وقت و انرژی زیادی رو صرف هیچ کردید.

    در مورد دیتابیس ها خوبه که استفاده کنید. چون همشون به نوعی از دات نت خارج میشن و وارد کدهایی معروف به Un managed میشن. اما استفاده از IDisposable نباید پیشفرض شما باشه.

    هر کسی سبک خودش رو در کد نویسی داره. بعضی ها دوست دارن پروژه رو دفاعی پیاده کنن و از همون اول چند لایه ی محافظ دور قایق بکشن که مطمئن باشن سوراخ نمیشه. فرق هم براشون نداره کجا قراره قایق سواری کنن. بعضی ها هم نگاه میکنن به شرایط ، آیا قراره دریا نوردی کنن یا تو یک برکه دور بزنن. دل رو میزنن به دریا میگن اگر سوراخ شد پر می کنیم. بسته به اینکه روی چه پروژه ای کار می کنید شرایط فرق میکنه.

    سرعت و کارایی Repository جای بحث داره. در همه ی پروژه ها لزوما اینطور نیست.

    پیشنهاد من به شما اینه که از چیزی که نمیدونید چه کاری انجام میده استفاده نکنید تا الزام استفاده از اون رو احساس کنید.

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

  1. سوال: ارور عجیب در فایل exe!!!
    نوشته شده توسط ab1234 در بخش برنامه نویسی در 6 VB
    پاسخ: 4
    آخرین پست: جمعه 10 مهر 1388, 18:26 عصر
  2. سوال: 2 ارور عجيب در زمان اتصال به بانك
    نوشته شده توسط HjSoft در بخش SQL Server
    پاسخ: 3
    آخرین پست: جمعه 26 تیر 1388, 15:43 عصر
  3. سوال: ارور عجیب در اینکلود کردن مت دات ایچ
    نوشته شده توسط amirali_asp_net در بخش برنامه نویسی با Borland C++‎ Builder
    پاسخ: 3
    آخرین پست: یک شنبه 01 دی 1387, 12:40 عصر
  4. سوال: ارور نامشخص در انتقال اطلاعات از اس کیو ال به سی شارپ
    نوشته شده توسط man_iran در بخش C#‎‎
    پاسخ: 1
    آخرین پست: شنبه 20 مهر 1387, 08:42 صبح
  5. Constructor در derived کلاس
    نوشته شده توسط ICEMAN در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 6
    آخرین پست: سه شنبه 25 دی 1386, 14:38 عصر

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

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