Ответы пользователя по тегу Проектирование баз данных
  • Какая нужна структура проекта?

    @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) и слои из чистой архитектуры, но мне лень это делать да и тебе тогда будет скучно
    Ответ написан