我正在设计我的ASP.NET MVC应用程序,我遇到了一些有趣的想法.
我见过的很多样本都描述并使用了Repository模式(IRepository),所以这就是我学习MVC时的方式.
现在我知道它正在做什么,我开始看看我目前的设计并想知道它是否是最好的方式.
目前,我有一个基本的IUserRepository,它定义方法,如FindById(),SaveChanges()等.
目前,每当我想在DB中加载/查询用户表时,我都会按照以下方式执行操作:
private IUserRepository Repository;
public UserController()
: this(new UserRepository())
{ }
[RequiresAuthentication]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(string ReturnUrl, string FirstRun)
{
var user = Repository.FindById(User.Identity.Name);
var viewModel = Mapper.Map<User, UserEditViewModel>(user);
viewModel.FirstRun = FirstRun == "1" ? true : false;
return View("Edit", viewModel);
}
[AcceptVerbs(HttpVerbs.Post), ValidateAntiForgeryToken(Salt = "SaltAndPepper")]
public ActionResult Edit(UserEditViewModel viewModel, string ReturnUrl)
{
//Map the ViewModel to the Model
var user = Repository.FindById(User.Identity.Name);
//Map changes to the …Run Code Online (Sandbox Code Playgroud) 准备一堵代码墙...这是一个很长的阅读,但它是我可以得到的冗长.
我想我开始越来越接近理解这一切了.我正在尝试习惯使用它.这是我到目前为止所拥有的.
Project.Web(ASP.NET MVC 3.0 RC)
Project.Models(域对象)
Membership.MemberMembership.IMembershipProviderProject.Persistence(流利的nHibernate)
使用Castle.Windsor
Membership.MembershipProvider : IMembershipProvider
我有以下课程 Project.Persistence
using Castle.Windsor;
using Castle.MicroKernel.Registration;
using Castle.MicroKernel.SubSystems.Configuration;
namespace Project.Persistence
{
public static class IoC
{
private static IWindsorContainer _container;
public static void Initialize()
{
_container = new WindsorContainer()
.Install(
new Persistence.Containers.Installers.RepositoryInstaller()
);
}
public static T Resolve<T>()
{
return _container.Resolve<T>();
}
}
}
namespace Persistence.Containers.Installers
{
public class RepositoryInstaller : IWindsorInstaller
{
public …Run Code Online (Sandbox Code Playgroud)