Это довольно длинный вопрос, но я буду очень признателен за ваши мысли и предложения.
Мы заняты восстановлением устаревшей системы, написанной на PHP и MySQL, и заменой ее компонентов на ASP.MVC на C # и SQL Server. Унаследованная архитектура оставляет желать лучшего, и существует серьезная проблема со спагетти-кодом, отсутствием ссылочной целостности в БД, неиспользуемым кодом и полями базы данных и просто плохим кодированием в целом.
Как бы мне ни хотелось, мы не можем просто вырвать весь старый код и заменить его. Компания должна оставаться работоспособной в процессе разработки, поэтому нам нужно будет создавать новые функции, используя старые базы данных, чтобы их данные всегда были точными. Уровень точности данных не в реальном времени, но если бы у нас было 2 системы, они должны были бы синхронизироваться в 100% случаев. Старая система использует 6 разных баз данных MySQL, все на одном сервере под управлением Linux. Мы будем использовать Windows 2008 R2 на новом сервере для новой системы, и мы планируем использовать последнюю версию SQL Server.
Проблема, которую я должен решить, заключается в следующем: мне нужно каким-то образом отобразить все эти базы данных в консолидированную модель, которую мы можем использовать с помощью C # для разработки новой системы. После того, как мы переместили все функции на C #, нам нужно перенести данные в базу данных, которая соответствует нашей модели кода. Эта БД будет работать на SQL Server. Я пока не слишком беспокоюсь о миграции; Моя текущая проблема - найти инструмент ORM, который позволит мне сопоставить эти 6 баз данных MySQL в единую, хорошо спланированную и спроектированную модель, которую мы можем использовать для новой разработки.
В новой модели могут быть дополнительные поля, которые нам придется хранить в новой базе данных MySQL, пока мы не перенесем данные на каком-то этапе, поэтому ORM должен поддерживать легкое создание сущностей, охватывающих несколько таблиц и баз данных.
Возможно ли то, что я пытаюсь сделать? Это жизнеспособно с точки зрения усилий? Есть ли ORM, который может все это сделать? и как еще можно сохранить работоспособность компании при активном развитии системы?
Я просмотрел эти варианты ORM:
- SubSonic (отличный, но я думаю, слишком легкий для того, что мы пытаемся)
- Entity Framework (похоже, я смогу использовать это, если буду использовать очень грязные модели с множеством хранимых процедур для вставок, обновлений и удалений)
- NHibernate (клиент не хочет, чтобы мы использовали это из-за плохого опыта в прошлом)
- LLBLGen (похоже, что он может делать то, что нам нужно, но долгосрочная поддержка может быть проблемой для клиента)
На что еще я должен посмотреть? Могу ли я попробовать другой подход?