在 MVC2 中保存用户名 + EF4
我正在使用 EF4 开发一个简单的 MVC2 项目。我还使用在控制器的构造函数中实例化的存储库模式。我有 34 个表,每个表都有 CreatedBy 和 LastModifiedBy 字段,保存记录时需要填充这些字段。
除此之外,您对于如何将用户名从控制器传递到实体还有其他想法吗:
[HttpPost]
public ActionResult Create(){
Record rec = new Record();
TryUpdateModel(rec);
rec.CreatedBy = HttpContext.Current.User.Identity.Name;
rec.LastModifiedBy = HttpContext.Current.User.Identity.Name;
repository.Save();
return View();
}
I am working on a simple MVC2 project with EF4. I am also using Repository pattern which is instantiated in the controller's constructor. I have 34 tables each with CreatedBy and LastModifiedBy fields that needs to populated when the record is saved.
Do you have other ideas on how to pass the username from the controller to the entity other than this:
[HttpPost]
public ActionResult Create(){
Record rec = new Record();
TryUpdateModel(rec);
rec.CreatedBy = HttpContext.Current.User.Identity.Name;
rec.LastModifiedBy = HttpContext.Current.User.Identity.Name;
repository.Save();
return View();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以创建自定义模型绑定器,在调用操作之前设置这两个属性。
像这样的东西:
You can create custom model binder that would set these two properties before action gets invoked.
Something like this:
您可以将其包装在存储库中。如果所有实体共享相同的字段,您可以使用这些字段定义底层实体,并从此实体派生其他实体(每个具体类层次结构的表)。
然后,您可以为存储库定义基类,如下所示:
您可以通过将 IIdentity 直接传递给存储库构造函数来进一步改进此代码,或者更好地通过将一些自定义身份提供程序传递给存储库构造函数来进一步改进此代码。 Web 应用程序的默认提供程序实现将从 HttpContext 返回身份。
You can wrap this in repository. If all your entities share same fields you can define bass entity with those fields and derive other entities from this one (Table per concrete class hiearchy).
Then you can define base class for your repository like:
You can further improve this code by passing IIdentity directly to repository constructor or better by passing some custom Identity provider to repository constructor. Default provider implementation for web application will return identity from HttpContext.