相关疑难解决方法(0)

数据库抽象层设计 - 以正确的方式使用IRepository?

我正在设计我的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)

.net asp.net-mvc database-abstraction

14
推荐指数
1
解决办法
2810
查看次数

Castle Windsor IoC在MVC应用程序中

准备一堵代码墙...这是一个很长的阅读,但它是我可以得到的冗长.

回应仍然丢失在存储库和解耦,ASP.NET MVC

我开始越来越接近理解这一切了.我正在尝试习惯使用它.这是我到目前为止所拥有的.

项目

Project.Web(ASP.NET MVC 3.0 RC)

  • 使用Project.Models
  • 使用Project.Persistence

项目

Project.Models(域对象)

  • Membership.Member
  • Membership.IMembershipProvider

项目

Project.Persistence(流利的nHibernate)

  • 使用Project.Models
  • 使用Castle.Core
  • 使用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)

asp.net-mvc castle-windsor fluent-nhibernate

14
推荐指数
2
解决办法
1万
查看次数