Під час мого навчання я використовував NHibernate для деяких менших проектів, які я здебільшого кодував і розробляв самостійно. Тепер, перш ніж розпочати якийсь більший проект, дискусія виникла, як створити доступ до даних та використовувати чи рівень ORM чи ні. Оскільки я все ще перебуваю у своєму навчанні і все ще вважаю себе новачком у програмуванні підприємств, я не дуже намагався підштовхувати свою думку, що полягає в тому, що використання об’єктного реляційного картографа в базі даних може значно полегшити розвиток. Інші кодери в команді розробників набагато досвідченіші за мене, тому я думаю, що я просто зроблю те, що вони кажуть. :-)
Однак я не повністю розумію дві основні причини не використання NHibernate чи подібного проекту:
- Можна просто створити власні об’єкти доступу до даних за допомогою SQL-запитів та скопіювати ці запити з Microsoft SQL Server Management Studio.
- Налагодження ORM може бути важким.
Тож, звичайно, я міг би просто створити свій рівень доступу до даних з великою кількістю SELECT
s тощо, але тут я пропускаю перевагу автоматичних приєднань, класів пролегливих завантажень проксі та менших зусиль з обслуговування, якщо таблиця отримує новий стовпчик або стовпець перейменований. (Оновлення численний SELECT
, INSERT
і UPDATE
запити проти поновлення відображення конфігурації і , можливо , рефакторінга бізнес - класи і DTOs.)
Також, використовуючи NHibernate, ви можете зіткнутися з непередбаченими проблемами, якщо не дуже добре знаєте рамки. Це може бути, наприклад, довіривши Table.hbm.xml, де ви встановили довжину рядка для автоматичної перевірки. Однак я також можу уявити подібні помилки в "простому" рівні доступу до даних на основі запитів SqlConnection.
Нарешті, чи є ці аргументи, згадані вище, справді вагомою причиною не використовувати ORM для нетривіального корпоративного додатка на базі даних? Чи є ймовірно інші аргументи, які вони / я, можливо, пропустили?
(Я, мабуть, слід додати, що я думаю, що це як перший "великий" .NET / C # додаток, який вимагатиме командної роботи. Належні практики, які сприймаються як нормальні для переповнення стека, такі як тестування блоків або безперервна інтеграція, не є -існуючі тут дотепер.)