سلام
چند تا سوال
کاربرد اینکه از این کد در 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; } }
options حاوی اطلاعاتی مانند رشته اتصال یا Provider مورد نظر ef می باشد. بله میتوان ، این کار برای اضافه کردن جزئیات دیگر است یعنی اگر خواستید هنگام نمونه سازی از Context از آن ها استفاده کنید.
مورد دوم تزریق وابستگی در سانده کلاس است که توسط ioc تو کار ASP.NET Core انجام می شود.
خب الان بخواهیم از همون مورد اول استفاده کنیم ورودی تابع رو چی باید وارد کرد ؟
من طبق آموزش genericRepository میخوام UnitOfWork رو برای پروژه بنویسم ولی در در کلاس نمی دونم به چه صورت نمونه سازی کنم از Context
MyDbContext db; private GenericRepository<Person> personRepository; public GenericRepository<Person> PersonRepository { get { if (personRepository == null) { personRepository = new GenericRepository<Person>(db); } return personRepository; } }
بله دیدم و بسیار ممنون
ولی میخوام در asp.net Core استفاده کنم
میخواهم ببینم اونجا هم UnitOfWork استفاده میشه ؟ چون شنیدم در core احتیاجی به UnitOfWork نداره
بله نیازه نداره
ولی میتونید استفاده کنید
خب به نظر شما خوبه که استفاده کنم از 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) { }
من استفاده میکنم از Unit of work
بیشتر ترجیح میدم کنترل اوضاع رو دست بگیرم
خب پس
فقط بگید به چه صورت از Context نمونه سازی کنم ؟
همون کد های بالا
چون به این صورت نمیشه نمونه سازی کرد (کدپائین)
MyContext db=new MyContext();
فرقی با حالت قبلی نداره
مثل قبل نمونه سازی میشه
اگر باهاش کار نکردید مطالعه کنید چون تفاوتی با mvc نداره
ورودی میخواهد چون به این صورت تعریف شده
public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }
از ninject یا dependency injection خود core برای تزریق وایبستگی هاش استفاده کنید
میشه یه مثال برا کدش بگید
سلام حالا اگر دو تا کانکشن استرینگ داشته باشیم و از appseting.json بخواهیم اتصال را بخوانیم public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }
این قسمت را چطور باید تغییر بدهیم؟
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)