سلام خسته نباشی آقای مدائنی.
مشکل من اینه که unitofwork متد savechanges توی کنترلر کار نمیکنه اما تو لایه سرویس من کار میکنه کد ها هم این هستش:
public interface IUnitOfWork:IDisposable { IDbSet<TEntity> Set<TEntity>() where TEntity : class; int SaveChanges(); } ///////////////////////////////// public class EFUserService : IUserService { IUnitOfWork _uow; IDbSet<User> _user; public EFUserService(IUnitOfWork UnitOfWork) { _uow = UnitOfWork; _user = _uow.Set<User>(); } public void Add(User _User) { _user.Add(_User); } } ///////////////////////////////////////////////////////////// public class HomeController : Controller { // GET: Home IUserService _userservice; IUnitOfWork _uow; public HomeController(IUnitOfWork UnitOfWork, IUserService UserService) { _userservice = UserService; _uow = UnitOfWork; } [HttpGet] public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(UserRegisterViewModel _viewModel) { var Users = new User() { FirstName = _viewModel.FirstName, LastName = _viewModel.LastName, }; //_userservice.Add(Users); _userservice.Add(Users); _uow.SaveChanges(); return View(); }
قضیه DI هم با ninject حل کردم موردی یا ارروری ندارم اما توی کنترلر uow.SaveChanges کار نمیکنه در صورتیکه اگه تو لایه سرویس ازش استفاده کنم insert انجام میشه و savechanges کار میکنه،
به نظرتون مشکل از چیه؟!وهله سازی مورد داره؟
ارور میده ؟
متن ارور را ضمیمه کنید
نه هیچ ارروری نمیده فقط متد Savechange تو کنترلر مقدار 0 رو برمیگردونه و insert انجام نمیشه در صورتیکه وقتی تو لایه سرویس ازش استفاده میکنم مشکلی نداره و insert انجام میشه
این هم متد DBContext من هستش
public class ApplicationDbContext:DbContext,IUnitOfWork { public ApplicationDbContext() : base("DefaultConnection") { } public DbSet<User> Users { get; set; } public DbSet<UserType> UserTypes { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new UserConfig()); base.OnModelCreating(modelBuilder); } public new IDbSet<TEntity> Set<TEntity>() where TEntity : class { return base.Set<TEntity>(); } }
کدهاتون به نظر درست میاد
باید کدهارو با BreakPoint تست کنید تا متوجه خطا بشید
جناب مدائنی من یکم سرچ کردم انگار مشکل از Ninject هستش برای اینکه Assambly مربوط به کنترلر ها باید Register بشن ، به نظر منطقی میاد چون مشکل توی کنترلر هست و توی لایه سرویس موردی نداره ،
الان از AutoFac به جای Ninject استفاده کردم مشکل حل شد.
ممنون که جواب دادین واقعا محبت کردین
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)