با سلام
چطوری میشه در ninject کاری کرد تا dbContext برای ورود به Repository ها از unit of work گرفته شود تا این الگو نقض نشود.
در قطعه کدهای زیر اون خطی که با زرد مشخص کردم، میخوام به جای اینکه مستقیما کلاس سرویس رو بدم بهش و dbContext رو بهش پاس بدم، بیام فقط اینترفیس IUserManagement رو بهش بدم و خودش dbContext رو از unit of work که داخل سازندش ایجاد شده دریافت کنه.
با تشکر
public interface IUserManagement { void Create(User user); }
public class UserManagement : IUserManagement { private readonly TestEntities dbContext; public UserManagement(TestEntities dbContext) { this.dbContext = dbContext; } public void Create(User user) { dbContext.Users.Add(user); } }
public interface IUnitOfWork { IUserManagement UserManagement { get; } void SaveChanges(); }
public sealed class UnitOfWork : IUnitOfWork
{
private readonly TestEntities dbContext;
private IUserManagement userManagement;
public UnitOfWork()
{
dbContext = new TestEntities();
}
public IUserManagement UserManagement
{
get
{
return userManagement ?? (userManagement = new UserManagement(dbContext));
}
}
public void SaveChanges()
{
dbContext.SaveChanges();
}
}
مثل زیر عمل کنید
در خط آخر UOW تزریق شده به ریپوزیتوری ها
ninjectKernel.Bind<IWalletRepository>().To<WalletRepository>(); ninjectKernel.Bind<ISocialNetworkRepository>().To<SocialNetworkRepository>(); ninjectKernel.Bind<ThemeShopContext>().To<ThemeShopContext>();
چه اتفاقی با عث نقض این الگو میشه؟؟
متوجه نمیشم ؟
با تشکر از آقای مدائنی
در پاسخ به دوستمون:
در صورتی که dbContext به صورت مشترک بین repository ها به گردش در نیاد uow نقض میشه. یعنی نباید هر repository یک dbContext جدا داشته باشه و همه باید اون رو از uow بگیرند.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)