2016-04-23 43 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(); 
      }); 
     }