NHibernate на (ВУ) + шаблон вызовов ccommand


Я строю ASP.NET приложение MVC и хотел бы некоторую обратную связь на моем пути запроса/выполнение инструкций в ОРМ.

Я использую свободно NHibernate на, и перепутали Ву обеспечивается NHibernate с командной схеме.

Метод ICommand.ЗС (базовый уровень)

using NHibernate;

namespace MyDemon.Core.Commands
{
    public interface ICommand<out TResult>
    {
        TResult Execute(ISession session);
    }
}

ISessionExtensions.ЗС (базовый уровень)

using NHibernate;

namespace MyDemon.Core.Commands
{
    public static class ISessionExtensions
    {
        public static TResult Execute<TResult>(this ISession session, ICommand<TResult> unitOfWork)
        {
            return unitOfWork.Execute(session);
        }
    }
}

GetUserById.ЗС (базовый уровень)

using NHibernate;

namespace MyDemon.Core.Commands.User
{
    using Entities;

    public class GetUserById : ICommand<User>
    {
        public int UserId { get; set; }

        public GetUserById(int userId)
        {
            UserId = userId;
        }

        #region Implementation of IUnitOfWork<out User>

        public User Execute(ISession session)
        {
            return session.Get<User>(UserId);
        }

        #endregion
    }
}

AccountController.КС (web-слой)

[AjaxOnly]
[Authorize]
public ActionResult Details(int id)
{
    User userToGet = _session.Execute(new GetUserById(id));

    if (userToGet == null)
    {
        return PartialView("Partials/UserNotFound");
    }

    DetailsUserViewModel userToViewModel = Mapper.Map<User, DetailsUserViewModel>(userToGet);

    return PartialView("Partials/Details", userToViewModel);
}

Что вы думаете? Продуманный дизайн, или просто другой "слишком много кода" подход?



1562
4
задан 1 февраля 2011 в 02:02 Источник Поделиться
Комментарии
1 ответ

Это кажется много кода, чтобы сказать то же самое, как это:

[AjaxOnly]
[Authorize]
public ActionResult Details(int id)
{
User userToGet = _session.Get<User>(id);

if (userToGet == null)
{
return PartialView("Partials/UserNotFound");
}

DetailsUserViewModel userToViewModel = Mapper.Map<User, DetailsUserViewModel>(userToGet);

return PartialView("Partials/Details", userToViewModel);
}

Какую проблему вы пытаетесь решить?

(или я что-то пропустила?)

3
ответ дан 3 февраля 2011 в 10:02 Источник Поделиться