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

    } 

ビルドは正常に実行されますが、このクラスで作業ユニットはnullです。

私はこのクラスとのインターフェイスを持っています。

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'を登録しましたか? – Nkosi

+0

はい、container.RegisterType (); –

答えて

0

私は間違いを発見しました モデルメソッドを呼び出すためにインターフェイス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(); 
      }); 
     }