Модель или контроллер выполняет CRUD в asp.net? - PullRequest
0 голосов
/ 26 октября 2018

Я довольно новичок в ASP.NET и MVC, и я запутался в логике CRUD. Я нашел следующее объяснение из ресурса, однако, насколько мне известно, CRUD выполняются в контроллере, например, они достигаются с помощью таких действий, как Index, Create, DeleteConfirm, Edit и т. Д. Не понимаю ли я эту концепцию ? enter image description here

Ответы [ 3 ]

0 голосов
/ 26 октября 2018

Вы можете делать это где угодно, но вы нарушите концепцию «Разделение интересов». Контроллер должен заботиться только о том, какое представление или какое действие он будет вызывать или выполнять. Модель следует использовать только в том случае, если ваши данные будут структурированы, обычно она похожа на то, как выглядят свойства вашей базы данных. Короче говоря, ваша Модель (модель класса) должна иметь минимальное мышление. Например, у вас есть таблица Person с такими столбцами, как IDPerson, FirstName, LastName. Ваша модель должна быть примерно такой:

public class Person {
     public IdPerson {get;set;}
     public FirstName {get;set;}
     public LastName {get;set;}
}

Допустим, у вас есть представление, которое показывает детали человека, который может быть чем-то как это:

public class PersonController : Controller

public ActionResult GetPerson(int IdPerson){
     PersonBusinessLogic pbl = new PersonBusinessLogic();
     Person p = pbl.GetPersonFromDatabase(id); //To add more consistency, the data access is on a separate class for better maintenance and to emphasize "Separation of Concerns"

ViewResult vr = new ViewResult()
     {
            ViewName = this.View,//This is where you assign the page if you have other pages for this action
            ViewData = new ViewDataDictionary(ViewData)
            {
                Model = p
            }                             
      };

      return vr;
}

Для вашей нефти:

[HttpPost]
public ActionResult CreatePerson(Person p)
{
        try
        {
            if (ModelState.IsValid)
            {              
        PersonBusinessLogic pbl = new PersonBusinessLogic();
        pbl.CreatePersonToDatabase(p);
                return RedirectToAction("Index", "Home");
            }
        }
        catch(Exception ex){
            ModelState.AddModelError("",ex.Message);
        }

        return View(p);
}

[HttpPost]
public ActionResult UpdatePerson(Person p)
{
        try
        {
            if (ModelState.IsValid)
            {              
        PersonBusinessLogic pbl = new PersonBusinessLogic();
        pbl.UpdatePersonToDatabase(p);
                return RedirectToAction("Index", "Home");
            }
        }
        catch(Exception ex){
            ModelState.AddModelError("",ex.Message);
        }

        return View(p);
}

[HttpPost]
public ActionResult DeletePerson(Person p)
{
        try
        {
            if (ModelState.IsValid)
            {              
        PersonBusinessLogic pbl = new PersonBusinessLogic();
        pbl.DeletePersonByIDFromDatabase(p.IdPerson);
                return RedirectToAction("Index", "Home");
            }
        }
        catch(Exception ex){
            ModelState.AddModelError("",ex.Message);
        }

        return View(p);
}

Чтобы дать вам лучшее представление, найдите статью о том, как MVC широко применяется в качестве концепции, тогда вы по достоинству оцените процесс обучения.

0 голосов
/ 26 октября 2018

Согласно изображению выше, модель - это «Модель Doamin», это не «M» от MVC, как сказал Слава Утесинов, это концепция DDD (доменно-управляемый дизайн).

InASP.NET MVC, традиционный способ, которым мы используем CRUD в действиях контроллеров, и вы понимаете, что это правильно.

В концепции DDD (Domain-Driven Design) мы делаем CRUD в доменной модели.

Что бы мы ни использовали архитектуру DDD или традиционные способы, мы должны делать это на основе базовой архитектуры MVC.

Дополнительная информация о DDD для справки: Домен-управляемый дизайн - что это такое и как вы его используете?

0 голосов
/ 26 октября 2018

Да, вы правы, операции CRUD могут выполняться в контроллере с помощью действий, и модель может помочь в этом.Модель - это не что иное, как класс, который обладает свойствами в этом.Например: «Сотрудник» - это класс, который имеет различные свойства, такие как «Имя, Фамилия, Код сотрудника, Электронная почта, DateOfJoining и т. Д.».Теперь, если вам нужно выполнить операцию CRUD для этого, вы должны написать код в классе контроллера под другими действиями, используя этот класс модели «Сотрудник».

Модель не может выполнять только операцию CRUD.

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