TLDR - что является лучшим вариантом между EF и NHibernate, если все, что вы знаете, это то, что ему нужно работать с oracle db, изменение динамической схемы во время выполнения, в некоторых таблицах нет первичных ключей, обучения кривая наклоняется слишком долго.NHibernate vs. Entity Framework
Мы написали приложение MVC 4, которое использует EF для извлечения данных из базы данных. Мы знали, что в этот проект входит то, что некоторые из наших таблиц не имеют первичных ключей (и некоторые из них не получат их когда-либо), поэтому у нас также есть проект настойчивости для запуска регулярных запросов к таблицам без первичных ключей. Это было наше решение по первому ключевому вопросу, но я читал, что NHibernate более прощает и имеет некоторые работы для запросов таблиц без первичных ключей. Это так?
Был задан вопрос о том, сможет ли мы изменить схему во время выполнения на основе того, что входит в систему. Каждый клиент будет иметь одинаковые наборы таблиц, но у них есть отдельная схема. Это для целей безопасности. Таблицы никогда не будут отличаться, поэтому у нас будет одна «основная» схема, которую мы используем для создания нашего poco и построения в dev. Однако, когда приложение развертывается, клиенты регистрируются, и они должны иметь возможность получать заказы из таблиц в рамках их соответствующей схемы. Это было бы сделано путем изменения схемы, которая используется в контексте ... если у кого-то нет лучшего предложения для этого? По сути, мы хотим изменить те таблицы, к которым пользователь подключается, на основе того, к какому клиенту они принадлежат, но все же могут просматривать все объекты в дизайнере модели и генерировать poco при работе внутри решения.
Мы используем оракул как наш поставщик баз данных и работаем с EF до сих пор, но EF требует сторонних инструментов для работы, тогда как NHibernate хорошо работает с оракулом из коробки. Поскольку у нас есть Oracle oracle, мы должны смотреть на другие инструменты ORM над EF или EF по-прежнему сильным инструментом?
Как я уже сказал, у нас уже есть запутанное приложение, работающее с EF. Это было относительно прямолинейно и легко понять. После того, как мы закончим проектирование архитектуры и задней кости, остальная часть команды будет очень легко погружаться и работать с EF на основе моего опыта. Это может быть связано с тем, что доступно множество доступных справочных материалов и даже учебные проекты, которые показывают EF в действии с MVC. Мне уже было трудно найти хорошую документацию и поддержку для NHibernate. Кто-нибудь испытал разочарование из-за отсутствия документации и с тех пор решил забыть все о NHibernate как инструменте ORM, и будет ли трудно другим разработчикам быстро изучить его?
ps. Смелый вопрос, приведенный выше, был самым неприятным, что я не могу решить до сих пор и является причиной того, что я смотрю на NHibernate как альтернативное решение. Если вы можете предложить решение, позволяющее мне динамически изменять схему во время выполнения, я могу забыть все о NHibernate. Поэтому, если ничего больше, я действительно ищу полужирный раздел, чтобы получить ответ.
Заранее спасибо за помощь
Не совсем уверен, как любой ORM будет эффективен в базе данных, где схема изменяется во время выполнения и не имеет первичных ключей tbh. – James
@saluce - (по вашей ссылке) «Ищите объяснения, а не предложения: будьте конкретны в том, что вам нужно для достижения, изучения или покупки, но спросите, как это сделать, узнать или выбрать». вам конкретные критерии или инструменты, которые я использую прямо сейчас, и спросили, что будет идеально, и основная часть моего вопроса запрашивала методы для выполнения моих текущих проблем, которые в конечном итоге привели меня в NHibernate для начала. Я не просил продавца продать меня на двух продуктах без ссылки на ситуации, которые привели меня к началу поиска в первую очередь. – danmanallen
@James - отображения xml не будут меняться, потому что все схемы будут иметь одинаковые расположение и структура таблицы. Все от ограничений FK до триггеров таблицы будет одинаковым. Единственное различие - это данные в таблицах (это будет конкретный клиент) и [Схема]. который идет перед именем таблицы. Я не уверен, что это лучший способ организации данных, но это то, что заявили аналитики db, которые они планируют сделать, и я должен сначала исключить возможность изменения схемы во время выполнения. Хорошим примером того, что у нас есть, является ситуация с несколькими арендаторами. – danmanallen