В этом руководстве мы решим одну из основных проблем, которые Entity framework не позволяет нам решить.

Эта проблема

Недавно я работал над проектом, в котором мне нужно было создать несколько таблиц, в которых каждая таблица содержит одинаковое количество столбцов с одним и тем же типом данных, т.е. каждая таблица должна иметь одинаковую структуру. Как мы все знаем, Entity Framework 6 ожидает, что мы создадим отдельную модель (класс) с другим именем, поэтому с точки зрения разработчиков было не лучшим подходом создавать одну и ту же модель множество раз с разными именами. , это так скучно и сложно, когда мы одновременно думаем об обслуживании.

Давайте посмотрим на следующий отрывок кода

Как видно из приведенного кода, я создал класс с именем CommanEntity, который состоит из двух свойств, то есть id и name, а затем я унаследовал класс DbContext в MyDbContext и, наконец, создал два объекта таблиц, которые, очевидно, имеют разные имена. Поэтому, когда вы запустите приведенный выше код, вы получите исключение. Итак, теперь переходим к решению.

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

Волшебный трюк

Прежде всего, я создаю определяемый пользователем метод с именем GetTable () и передаю имя таблицы в качестве параметра, который мы создали ранее, а затем создал объект DbSet как общая модель. Наконец, я вызвал метод First () с простой командой Sql в качестве параметра с именем таблицы на MyDbContext и все.

Заключение

Мы решили проблему структуры сущностей 6, в которой создание нескольких таблиц с разными именами в объекте DbSet официально не поддерживалось.