Задать вопрос
@abouv759

Какая нужна структура проекта?

Есть netcore веб приложение, в ней три страницы - категория товара, создание товара, просмотр товара. На странице категории товара должен выводиться список категорий, с возможностью добавлять новую или удалить. При добавлении категории нужно добавить возможность добавлять дополнительные поля для товара категории. На странице создания товара должна быть общая инфа и указать значения для дополнительных полей, которые были созданы для выбранной категории.
  • Вопрос задан
  • 149 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 1
@marklondon
Давай предположим, что авторизации нет. Она - это совсем другая история. Значит у нас остаются две сущности: сущность книги(к примеру) и категория книги

Модель книги
public class Book
{
public string Id { get;set; }
public string? Name { get; set; }
public string? Description { get; set; }
public int CategoryId { get; set; }
public Category? Category { get; set; }
}


Модель категории

public class Category
{
public string Id { get; set; }
public string? Name { get; set; }
public string? Description { get; set; }
}


В моделях можно заюзать рекорды, но это фишка новых версий и возможно у тебя её банально нет. Далее создаёшь контекст файл для базы данных (в случае ef core, даппер тебе на данном этапе не нужен). В контекст прописываешь сеты для моделей. Ничего дополнительного делать не надо, современный еф кор поймёт что надо сделать и при миграциях всё построит сам. Ты кнш можешь заюзать database first, но тогда этот вопрос далеко не по шарпам = неверная категория вопроса.

И если не париться над архитектурой то прямо в контроллере пишешь методы представлений с использованием в них же appdbcontext

Пример с добавлением сущности в бд

public IActionResult Index()
{
IEnumerable? list = _db.Categories.ToList();
return View(list);
}

public IActionResult Create()
{
return View();
}

[HttpPost]
public IActionResult Create(Category obj)
{
_db.Categories.Add(obj);
_db.SaveChanges();
return RedirectToAction("Index");
}


То есть для каждой операции по 2 экшена => 1 отдаёт представление, второй обрабатывает заполненную форму. Единственное, для delete 1 метод, там нечего обрабатывать, сразу удаляешь при нажатии на кнопку.

В index представлении циклом достаёшь все объекты в табличку, а в create post форма, которая отправит промежуточный объект в контроллер.

Так никто не пишет в реальном проекте, но для понимания думаю сойдёт. В лучшем случае тут должны быть по 2 сущности (domain and db entities) и слои из чистой архитектуры, но мне лень это делать да и тебе тогда будет скучно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы