Правильный способ обработки DataContext в приложении
Обнаружение (WPF Windows) Сведения о приложении
- БД является SQLite и использует ADO.net Entity Framework в качестве ORM
- БД очень мала Максимальный размер БД может составлять от 600 до 800 КБ с примерно 15-20 таблицами.
- База данных обновляется только XML-файлом сервера во всех сценариях (то есть xml будет преобразован в типы ORM и будет передан в БД через объект FW)
- Таким образом, ни один объект ORM из верхних уровней никогда не будет использоваться для обновления БД, поскольку нам необходимо заново создать объекты ORM из файла XML, чтобы обновить его до БД
С этими требованиями я сделал в настоящее время
- Контекст данных недоступен ни одному из контроллеров, кроме уровня БД, поэтому ни один контроллер не может обновить что-либо в БД (также не может перейти от объекта через свойства навигации), так как единственная возможность - от сетевого уровня
- Я конвертирую типы ORM в какой-то другой фиктивный тип для ex: если ORM имеет класс сотрудника (который генерируется из Framework), я преобразую его в тип Employee и отправлю его на верхние уровни (это не будет иметь никаких свойств навигации, которые будет присутствовать в типе сотрудника ORM), который будет использоваться контроллерами и всеми другими уровнями, и когда XML получен от сетевого уровня, он будет отправлен на уровень БД, который сгенерирует соответствующие типы ORM и обновит БД
- так как я преобразовываю его в фиктивный тип, мне больше не нужно беспокоиться о времени жизни контекста данных и не требуется каждый раз воссоздавать объект в другом методе, а все операции запроса делегируются на уровень БД. Является ли этот подход хорошим?
Примечание: это многопоточное и очень асинхронное приложение для Windows
так что мой вопрос
Является ли преобразование типа orm в другой тип хорошим решением описанной проблемы?