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

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

کاربر سایت

loti8

عضویت از 1394/04/10

سوال درباره Unit Of Work

  • یکشنبه 10 مرداد 1395
  • 10:57
تشکر میکنم

سلام خسته نباشی آقای مدائنی.

مشکل من اینه که 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 کار میکنه،

 

به نظرتون مشکل از چیه؟!وهله سازی مورد داره؟

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

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

ایمان مدائنی

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

  • یکشنبه 10 مرداد 1395
  • 11:00

ارور میده ؟

متن ارور را ضمیمه کنید

کاربر سایت

loti8

عضویت از 1394/04/10

  • یکشنبه 10 مرداد 1395
  • 11:01

نه هیچ ارروری نمیده فقط متد 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>();
        }

    }

 

کاربر سایت

ایمان مدائنی

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

  • یکشنبه 10 مرداد 1395
  • 12:33

کدهاتون به نظر درست میاد

باید کدهارو با BreakPoint تست کنید تا متوجه خطا بشید

کاربر سایت

loti8

عضویت از 1394/04/10

  • یکشنبه 10 مرداد 1395
  • 13:10

جناب مدائنی من یکم سرچ کردم انگار مشکل از Ninject هستش برای اینکه Assambly مربوط به کنترلر ها باید Register بشن ، به نظر منطقی میاد چون مشکل توی کنترلر هست و توی لایه سرویس موردی نداره ،

الان از AutoFac به جای Ninject استفاده کردم مشکل حل شد. 

 

ممنون که جواب دادین واقعا محبت کردین

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

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

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

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