リクエストからのみIPアドレスを取得できるため、アクションでIPアドレスを「取得」します
このようなもの
[HttpPost]
public ActionResult Login(UserRegisterViewModel model) {
if(ModelState.IsValid) {
SaveLogonToAudit(model.Username);
}
return View(model);
}
private void SaveLogonToAudit(string username) {
var user = new UserAccount(username, Request.Browser.Browser, Request.Browser.Type, Request.UserHostAddress);
user.Save();
}
User エンティティは別のレイヤーに存在する可能性があり、UserRegisterViewModel は MVC UI レイヤーに存在します。ビュー内のデータを表す ViewModel と、ユーザー エンティティを表す別のレイヤー内の完全に別のクラスを持つことは、まったく普通のことです。いいデザインですね。User エンティティは ServiceLayer に配置でき、ビジネス ルールを関連付けることができます。次に、そのクラスがリポジトリ レイヤーを呼び出して、そのデータを保存します。
私は Leon Cullens に同意します。CreateDate は User エンティティに存在する必要があります。そのため、私はそれを設定していません。User エンティティは、RepositoryLayer を呼び出す独自の CRUD アクションを処理する必要があります。ctor で CreateDate を設定するか、さらに良いことに、ユーザーが内部で使用する CreateDate、CreatedBy、LastUpdateDate、LastUpdatedBy を持つ基本クラスを用意します。