مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

DbContext در Asp.Net Core 2

  • شنبه 25 فروردین 1397
  • 16:43
تشکر میکنم

سلام 
چند تا سوال
کاربرد اینکه از این کد در   DbContext برای Constructor استفاده کنیم چیه ؟

 public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
        {
        }

و آیا نمیشه برای Constructor فقط به این صورت ساده نوشت ؟ چه تفاوتی داره با کد قبلی داره  ؟

Public MyDbContext(){}

و علت استفاده در هر کنترلر از Dbcontext به این صورت چیه ؟ یعنی دقیقا کد زیر چه عملی انجام میده ؟

public class StudentsController : Controller
    {
        private readonly MyDbContext_context;

        public StudentsController(MyDbContext context)
        {
            _context = context;
        }
}


پاسخ های این پرسش

تعداد پاسخ ها : 13 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • شنبه 25 فروردین 1397
  • 17:29

options حاوی اطلاعاتی  مانند رشته اتصال یا Provider مورد نظر ef  می باشد. بله میتوان ، این کار برای اضافه کردن جزئیات دیگر است یعنی اگر خواستید هنگام نمونه سازی از Context از آن ها استفاده کنید.

مورد دوم تزریق وابستگی در سانده کلاس است که توسط ioc تو کار ASP.NET Core انجام می شود.

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • شنبه 25 فروردین 1397
  • 21:10

خب الان بخواهیم از همون مورد اول استفاده کنیم ورودی تابع رو چی باید وارد کرد ؟

من طبق آموزش genericRepository میخوام UnitOfWork رو برای پروژه بنویسم ولی در در کلاس نمی دونم به چه صورت نمونه سازی کنم از Context

 MyDbContext db;
    

        private GenericRepository<Person> personRepository;
        public GenericRepository<Person> PersonRepository
        {
            get
            {
                if (personRepository == null)
                {
                    personRepository = new GenericRepository<Person>(db);
                }

                return personRepository;
            }
        }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 26 فروردین 1397
  • 09:51

آموزش تاپ لرن رو دیدید ؟

نحوه ساخت و استفاده از الگوی Repository

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • یکشنبه 26 فروردین 1397
  • 11:08

بله دیدم و بسیار ممنون 
ولی میخوام در asp.net Core استفاده کنم 
میخواهم ببینم اونجا هم UnitOfWork استفاده میشه ؟ چون شنیدم در core احتیاجی به UnitOfWork نداره 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 26 فروردین 1397
  • 11:11

بله نیازه نداره

ولی میتونید استفاده کنید

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • یکشنبه 26 فروردین 1397
  • 11:17

خب به نظر شما خوبه که استفاده کنم از UnitOfWork در core ؟
یه سوال 
در کلاس  UnitOfWork شما اومدین از MyDBContetx یک نمونه ساختید و از اون استفاده کردید 

MyContext db=new MyContext();

        private MyGenericRepository<Person> personRepository;

        public MyGenericRepository<Person> PersonRepository
        {
            get
            {
                if (personRepository == null)
                {
                    personRepository=new MyGenericRepository<Person>(db);
                }

                return personRepository;
            }
        }

ولی نمی دونم به چه صورت نمونه سازی کنم از Context در اینجا چون در کلاس DBContext به این صورت تعریف شده و ورودی میخواهد 
به چه صورت در UnitOfWork یک نمونه ازش بسازم و ورودی رو چی بدم ؟

public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 26 فروردین 1397
  • 11:20

من استفاده میکنم از Unit of work

بیشتر ترجیح میدم کنترل اوضاع رو دست بگیرم

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • یکشنبه 26 فروردین 1397
  • 11:25

خب پس 
فقط بگید به چه صورت از Context نمونه سازی کنم ؟
همون کد های بالا 
چون به این صورت نمیشه نمونه سازی کرد (کدپائین)

MyContext db=new MyContext();

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 26 فروردین 1397
  • 12:02

فرقی با حالت قبلی نداره

مثل قبل نمونه سازی میشه

اگر باهاش کار نکردید مطالعه کنید چون تفاوتی با mvc نداره

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • یکشنبه 26 فروردین 1397
  • 12:14

ورودی میخواهد چون به این صورت تعریف شده 

public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 26 فروردین 1397
  • 12:17

از ninject یا dependency injection خود core برای تزریق وایبستگی هاش استفاده کنید

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • یکشنبه 26 فروردین 1397
  • 12:27

میشه یه مثال برا کدش بگید 

کاربر سایت

hamzehsh

عضویت از 1396/01/12

  • سه شنبه 24 اردیبهشت 1398
  • 16:30
سلام
حالا اگر دو تا کانکشن استرینگ داشته باشیم و از appseting.json بخواهیم اتصال را بخوانیم
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
       {
       }

این قسمت را چطور باید تغییر بدهیم؟

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)