Единство работы + богатый домен

Я пытаюсь реализовать богатую модель с помощью Unit of Work.

public class User : BusinessBase, IUser
    {
        public int UserID { get; }
        public string Name { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public string Token { get; set; }
        public DateTime SigninDate { get; set; }
        public DateTime LastLogin { get; set; }


        public User(IUnityOfWork uow) : base(uow)
        {

        }

        public void Create(User user)
        {
            Name = user.Name;
            LastName = user.LastName;
            Email = user.Email;
            Password = user.Password; //TODO HASH
            Token = GetToken();
            SigninDate = DateTime.Now;
            LastLogin = DateTime.Now;
            Uow.User.Add(this);
        }

    }

Сборка работает нормально, но в этом классе единица работы равна нулю.

У меня есть интерфейс с этим классом.

interface IUser: ICommitable
    {
        void Create(User user);
        void Delete();
        void EditName(string name);
        void EditLastName(string lastName);
        void EditEmail(string email);
        void EditPassword(string password);
        void GenerateToken();
        string GetToken();
        void UpdateLoginDate();
    }

и на UnityConfig.cs, я регистрирую тип

container.RegisterType<IUser, User>();

Почему Unit Of Work не инициализируется, и как я могу это решить?

1 ответ

Решение

Так что я обнаружил ошибку: я не использовал интерфейс IUser для вызова метода модели.

 public class UsersController : ApiControllerBase
    {


        [HttpPost]
        [AllowAnonymous]
        public DtoResultBase CreateUser(User user)
        {
            return Resolve(() =>
            {
                user.Create(user);
                user.Commit();
                return new DtoResultBase();
            });
        }

Теперь с интерфейсом, реализованным в контроллере:

 public class UsersController : ApiControllerBase
    {

        private IUser UserBusiness;

        public UsersController(IUser userBusiness)
        {
            UserBusiness = userBusiness;
        }


        [HttpPost]
        [AllowAnonymous]
        public DtoResultBase CreateUser(User user)
        {
            return Resolve(() =>
            {
                UserBusiness.Create(user);
                UserBusiness.Commit();
                return new DtoResultBase();
            });
        }
Другие вопросы по тегам