Почему ищется не та таблица?

103
21 ноября 2021, 09:10

Я начинающий в ASP.NET Core MVC.

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

    public class RoomModel
    {
        [System.ComponentModel.DataAnnotations.Key]
        public int Id { get; set; }
        public string RoomName { get; set; } 
    }

Подключился к локальной бд MS SQL Server, добавил в сервисы контекст бд - всё как положено. Контекст получаю в контроллере:

    public class AdminController : Controller
    {
        public AdminController(RoomContext context)
        {
            DBAdmin.SetContext(context); // Передаю контекст в специальный класс для работы с БД
        }
        public IActionResult Index()
        {
            return View(DBAdmin.SelectAllData(RoomsType.Lux)); // Получаю данные из определённой таблицы (с люкс номерами) в виде списка List<RoomModel> и отдаю в представление
        }
    }

Контекст БД RoomContext:

    public class RoomContext : DbContext
    {
        public DbSet<RoomModel> LuxRooms { get; set; } // таблица для люксов
        public DbSet<RoomModel> JuniorSuiteRooms { get; set; } // таблица для номеров с классом "Полулюкс"
        public RoomContext(DbContextOptions<RoomContext> options) : base(options)
        {
            Database.EnsureCreated();
        }
    }

Моя БД:

Для работы с БД я решил сделать отдельный класс DBAdmin:

    public static class DBAdmin
    {
        private static RoomContext context;
        private static Dictionary<RoomsType, DbSet<RoomModel>> roomsTables = new Dictionary<RoomsType, DbSet<RoomModel>>(); //с помощью этого списка я проверяю входящий тип номера (люкс или полулюкс) с помощью перечисления типов номеров и выдаю соответствующую таблицу
        public static void SetContext(RoomContext cont)
        {
            context = cont;
            roomsTables.Add(RoomsType.Lux, context.LuxRooms);
            roomsTables.Add(RoomsType.JuniorSuite, context.JuniorSuiteRooms);
        }
        public static List<RoomModel> SelectAllData(RoomsType rtype) // rtype просто содержит одно из значение enum RoomsType, с которым будет сопоставляться нужная таблица
        {
            var rooms = roomsTables[rtype];
            return rooms.ToList(); // Возвращаю все значения таблицы в виде списка
        }
    }

В чём у меня проблема - у меня возникает следующая ошибка: System.Data.SqlClient.SqlException: "Invalid object name 'RoomModel' . Я так понимаю, список roomsTables возвратил таблицу с именем RoomModel, которой у меня нет и не должно быть. Почему так?

P.S. Если убрать из контекста RoomContext таблицу DbSet<RoomModel> JuniorSuitRooms или LuxRooms, то всё заработает.

READ ALSO
Не удается подключиться к MySql server, используя EF core

Не удается подключиться к MySql server, используя EF core

Я пытаюсь подключиться к базе данных, используя Entity Framework, но получаю такую ошибку:

111
Инсталлер для программы

Инсталлер для программы

У меня есть форма написаная в visual studio на c#

197
Вращение изображения в PictureBox c# [дубликат]

Вращение изображения в PictureBox c# [дубликат]

возникла проблема с вращение изображения в pictureBoxУ меня есть изображение и я вращаю его в форме (угол вращения задаю с помощью trackbara), хочу...

83
Как можно сделать текст на объекте

Как можно сделать текст на объекте

Как сделать текст на объекте, подобно этому скриншоту:

91