Я работаю над новым приложением, которое использует базу данных устаревшей системы. Каждая таблица в базе данных (их около 600) имеет столбец «Удалено», чтобы указать, должен ли элемент отображаться пользователям. В моем общем хранилище мне нужно добавить выражения LINQ, чтобы отфильтровать все элементы с Deleted == 1 / True.
Проблема, с которой я столкнулся, состоит в том, что столбец «Удаленный» имеет разные типы данных в разных таблицах.
Это крошечный знак, маленький знак или бит в любой таблице. Теоретически, это не должно быть большой проблемой, так как данные всегда будут храниться как 1 или 0 (ну, должно быть, я полагаю, но так или иначе, в некотором роде), который может быть приведен к любому конкретному упомянутые выше типы. Я просто не знаю, как и / или где это делать.
Я создал интерфейс, который заставляет все объекты раскрывать это свойство, но, поскольку типы различаются, каждая сущность с различными типами данных будет вызывать проблемы. Я надеялся (хотя уже знал, что это не будет работать), я мог бы изменить интерфейс на «объект» или «динамический», что все еще вызывает ошибки времени компиляции, так как модель EDMX создает классы модели данных. Я не хочу тратить слишком много времени на написание кода в шаблонах T4, если это не решит проблему.
Когда я изменяю свойства сущности модели EDMX для привязки к определенному типу данных, я получаю ошибки сопоставления («Недопустимо конкретное сопоставление элемента. Тип« Edm.Byte [] »члена« Удалено »в типе «MyEntity» несовместимо с «SqlServer.bit []» ....)
Я сомневаюсь, что смогу изменить типы данных в таблицах, так как есть много разных приложений, которые используют эту базу данных, и я уверен, что это где-то вызовет проблемы.
Кто-нибудь еще сталкивался с подобной ситуацией и придумал рабочее решение?
[EDIT]
Я собираюсь использовать решение, рекомендованное Балди, и создать представление для обтекания таблицы и создать дополнительный столбец, который будет использоваться для приведения столбца к разряду.