MVC3 правильное использование модели - PullRequest
0 голосов
/ 29 октября 2011

При рассмотрении примеров моделей MVC3.Большинство людей склонны использовать классы моделей для создания определений классов для бизнес-объектов для хранения данных с очень малой логикой или без нее.Тогда единственная цель модели - обойтись.Например:

namespace MvcMusicStore.Models
{
    public class Cart
    {
        [Key]
        public int RecordId { get; set; }
        public string CartId { get; set; }
        public int AlbumId { get; set; }
        public int Count { get; set; }
        public System.DateTime DateCreated { get; set; }

        public virtual Album Album { get; set; }
    }
}

Так ли обычно классы моделей следует использовать в MVC?Иногда я вижу логику, но очень специфичен для манипулирования данными.Например:

    public partial class ShoppingCart
    {
        MusicStoreEntities storeDB = new MusicStoreEntities();

        string ShoppingCartId { get; set; }

        public const string CartSessionKey = "CartId";

        public static ShoppingCart GetCart(HttpContextBase context)
        {
            var cart = new ShoppingCart();
            cart.ShoppingCartId = cart.GetCartId(context);
            return cart;
        }

        // Helper method to simplify shopping cart calls
        public static ShoppingCart GetCart(Controller controller)
        {
            return GetCart(controller.HttpContext);
        }

        public void AddToCart(Album album)
        {
            // Get the matching cart and album instances
            var cartItem = storeDB.Carts.SingleOrDefault(
c => c.CartId == ShoppingCartId
&& c.AlbumId == album.AlbumId);

            if (cartItem == null)
            {
                // Create a new cart item if no cart item exists
                cartItem = new Cart
                {
                    AlbumId = album.AlbumId,
                    CartId = ShoppingCartId,
                    Count = 1,
                    DateCreated = DateTime.Now
                };

                storeDB.Carts.Add(cartItem);
            }
            else
            {
                // If the item does exist in the cart, then add one to the quantity
                cartItem.Count++;
            }

            // Save changes
            storeDB.SaveChanges();
        }
}

Как правильно использовать модель?В классическом определении MVC модель - это то место, где должен быть интеллект приложения.Однако, глядя на образцы MVC3, много логики находится в контроллере или другом уровне, скажем, для доступа к данным.В чем преимущество этого?

Спасибо

1 Ответ

0 голосов
/ 29 октября 2011

Короткий ответ: он обеспечивает разделение определений моделей и доступа к данным, которые концептуально отличаются. Когда вы отделяете свой доступ к данным на его собственный уровень (не являющийся частью контроллеров или моделей), вы достигаете гораздо большего расцепления.

Тем не менее, существует множество различных способов использования MVC разработчиками, и модель как средство доступа к данным, безусловно, является одним из них - платформа даже поддерживает модели, основанные на объектной структуре; перейти прямо из базы данных к пригодной для использования модели.

Конечно, всегда есть шаблон "жирный контроллер"; то есть, вставьте всю свою логику обработки в контроллер. Я не рекомендовал бы это, потому что это очень быстро превратится в не поддерживаемый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...