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

#c# #sql #asp.net-mvc #entity-framework

Вопрос:

У меня есть ASP.NET Приложение MVC, предназначенное для работы как в среде разработки, так и в производственной среде. Я использовал существующую базу данных и таблицу в нашей среде разработки (которая также присутствует в производстве) для создания моделей EF и написал весь код на ее основе.

Теперь мы перемещаем приложение в рабочую среду, и таблица там имеет другой тип данных «bool», чем таблица разработки. Таблица dev использует бит(1) для представления логического значения, в то время как таблица prod использует smallint. К сожалению, простое изменение типа данных в рабочей среде не является вариантом, так как от этого зависят другие важные приложения.

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

Можно ли условно преобразовать данные в логические, независимо от типа данных в таблице?

Например, существует столбец с авторизацией. Он имеет одно и то же имя столбца независимо от среды, но может иметь разные типы данных. Могу ли я добавить логику для определения типа данных столбца с авторизацией, а затем преобразовать его в систему.Логическое значение (для модели EF), основанное на типе столбца?

Комментарии:

1. Вы должны отделить свою среду разработки от производственной. Это можно сделать с помощью определенной сборки, используя ветви git и так далее … таким образом, когда вы находитесь в ветке «разработка», вы работаете с самой современной моделью EF, а когда вы находитесь в производственной ветке, вы работаете с текущей развернутой моделью EF. Но при доставке некоторых обновлений вам необходимо предоставить обновления схемы в соответствии с рабочей таблицей. В противном случае для немедленного решения, почему бы не интегрировать изменение в таблицу разработки, чтобы оно точно соответствовало рабочей таблице?

2. Не делайте петлю для своей собственной шеи; измените разработчика, чтобы он соответствовал prod, и настройте приложение..

3. Директивы препроцессора? Но, как уже говорили другие… вероятно, лучше изменить одну из сред, чтобы она соответствовала другой (кажется, проще всего разработать, чтобы соответствовать производству).

4. Спасибо всем! В итоге нам повезло, и мы смогли стандартизировать как dev, так и prod для использования одного и того же типа данных. Я буду иметь в виду ваш совет в следующий раз, когда столкнусь с чем-то подобным