Я працюю з базою даних SQL Server з 1000+ таблицями, ще декількома сотнями переглядів та кількома тисячами збережених процедур. Ми хочемо почати використовувати Entity Framework для наших нових проектів, і ми працюємо над нашою стратегією для цього. Те, про що я повісив, - це як краще розділити таблиці на різні моделі (EDMX або DbContext, якщо ми спочатку перейдемо до коду). Я можу придумати декілька стратегій прямо біля кажана:
- Розділити за схемою
У нас таблиці розбиті напевно на десяток схем. Ми могли зробити одну модель за схемою. Однак це не ідеально, тому що dbo все ще залишається дуже великим, з 500+ таблицями / переглядами. Ще одна проблема полягає в тому, що певним одиницям роботи в кінцевому підсумку доведеться робити транзакції, що охоплюють кілька моделей, що додає складності, хоча я припускаю, що EF робить це досить просто. - Розділити за наміром
Замість того, щоб турбуватися про схеми, розділіть моделі за наміром. Таким чином, ми будемо мати різні моделі для кожної програми, проекту, модуля чи екрана, залежно від того, наскільки детально ми хочемо отримати. Проблема, яку я бачу з цим, полягає в тому, що існують певні таблиці, які неминуче повинні використовуватися у кожному випадку, наприклад, користувач або аудит-історія. Чи додаємо ми їх до кожної моделі (порушує DRY, я думаю), чи це в окремій моделі, яка використовується кожним проектом? - Не розбивайтесь взагалі - одна гігантська модель
Це, очевидно, просто з точки зору розвитку, але з мого дослідження та моєї інтуїції це здається, що це могло б бути страшним, як під час розробки, так і під час компіляції та, можливо, в процесі роботи.
Яка найкраща практика використання EF щодо такої великої бази даних? Зокрема, які стратегії використовують люди при розробці моделей щодо цього обсягу об'єктів БД? Чи є варіанти, що я не думаю, що це працює краще, ніж те, що я маю вище?
Також це проблема в інших ОРМ, таких як NHibernate? Якщо так, вони придумали якісь кращі рішення, ніж EF?