2016-04-23 41 views
0

我正在努力实现富有模式的工作单元。统一工作+丰富域名

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>(); 

为什么不工作单元不被初始化了,我怎么能解决这个问题?

+0

你已经注册'IUnityOfWork'与容器:

public class UsersController : ApiControllerBase { [HttpPost] [AllowAnonymous] public DtoResultBase CreateUser(User user) { return Resolve(() => { user.Create(user); user.Commit(); return new DtoResultBase(); }); } 
与控制器实现的接口

现在? – Nkosi

+0

是的,container.RegisterType (); –

回答

0

所以我发现了错误 我没有使用接口IUser来调用模型方法。

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(); 
      }); 
     }