2009-12-03 4 views
16

Я использую Entity Framework сейчас и постоянно должен писать встроенный sql, потому что инфраструктура Entity не поддерживает полнотекстовый поиск и другие функции. Есть ли там ORM, который имеет много функций, поддерживающих расширенные запросы? Я чувствую, что если я собираюсь иногда писать встроенный sql, я мог бы также сделать все это во встроенном sql. Любая помощь здесьЧто такое хорошие альтернативы Framework Entity

+2

Только мои два цента, но если вы хотите расширенные запросы, вы можете просто сбросить идею ORM и вместо этого использовать встроенный sql и следить за разделением кода уровня вашей сети и бизнес-логики (что не означает имеющие объекты, которые представляют таблицы в вашем db, но объекты, которые представляют намерение, которое в свою очередь прозрачно читает и записывает в базу данных за занавеской). Подобно активной записи, но ближе к намерению. – Frunsi

+6

Мнения Luke101 здесь интересны: http://stackoverflow.com/questions/1691575/what-orm-for-net-should-i-use/1691790#1691790 –

+0

Только что сказал слишком рано .. – Luke101

ответ

4

Взгляните:

+0

Забыл добавить: полнотекстового поиска пока нет. Но это уже в пути, см., Например, http://forum.x-tensive.com/viewtopic.php?f=29&t=5657 для некоторых деталей. –

+0

DataObjects.Net имеет очень плохую реализацию LINQ и выполняет ОЧЕНЬ медленно. Я бы настоятельно рекомендовал использовать NHibernate вместо этого в качестве прямого сравнения - он делает все, что делает DO.Net, и делает все лучше. – nathanchere

+0

Это неправильно - достаточно взглянуть на поддерживаемые функции, чтобы увидеть разницу. Поэтому я хотел бы услышать доказательство этого; напротив, я могу легко доказать, что LINQ в NH не поддерживает _lots_ функций, поддерживаемых DO и другими инструментами ORM (см., например, тесты @ ORMBattle.NET); то же самое о производительности. –

0

Вы посмотрели nHibernate?

Если вы ищете nHibernate and full text search, вы найдете множество ссылок, которые рассказывают об определенном типе реализации поиска.

11

NHibernate - одна из больших альтернатив OR/M и Open Source, которые мне нравятся. Он может делать некоторые «продвинутые» вещи, но имеет крутую кривую обучения.

+3

Поддержка LINQ есть, ну, среди худших. –

1

прикомандирования, что говорили другие, NHibernate. Плюс я нашел this link re: полнотекстовый поиск и nHibernate.

3

Вы можете посмотреть LLBLGen Pro или Telerik's OpenAccess, но NHibernate будет решением с крупнейшим сообществом вокруг него.

+0

Имеет ли LLBLGen Pro хорошую производительность? – Luke101

+0

LLBLGen Pro - один из самых быстрых ORM: https://github.com/FransBouma/RawDataAccessBencher –

8

Я чувствую, если я буду иногда писать встроенный SQL я мог бы также сделать все это в инлайн SQL

Серьезно? При использовании любой ORM вы всегда будете сталкиваться с ситуациями, когда лучше, чище или более эффективными, использовать SQL или вызывать хранимую процедуру. Вы не должны просто слепо верить, что все это делает для вас во всех ситуациях.

+5

«Если мне нужно написать эту процедуру в сборке для действительно хорошей производительности, я мог бы написать остальную часть моего приложения в сборка тоже ... » – Svish

+0

Для этого просто слишком сложно сделать это в ORM, попробуйте выбрать операторы с 20 таблицами и подзапросами. Иногда это просто проще в sql. – PeteT

4

Большинство ORM по-прежнему требуют некоторого встроенного SQL то и дело. NHibernate, Linq 2 Sql и т. Д. Не поддерживают полный текстовый поиск из коробки (NHibernate имеет NHibernate.Search, который использует Lucene.NET для полнотекстового поиска, Linq 2 Sql имеет доступ к хранимым процедурам, которые вы можете создать, которые используют полнотекстовый поиск).

Это не значит, что вы должны отказаться от использования ORM вообще. Существует тон повторяющегося кода сантехники, который ORM могут спасти вас от написания, а общие варианты использования - относительно легко выполнить (например, операции CRUD) с любым ORM.

2

Как и большинство людей, я рекомендую NHibernate, но вы можете захотеть изучить его в сочетании с реализацией CastleProject's ActiveRecord. NHibernate сам по себе может немного привыкнуть, но когда вы бросаете ActiveRecord, все становится намного проще. Я смог быстро выполнить преобразование EntityFramework-> NHibernate/ActiveRecord.

+0

Есть ли какие-нибудь книги или действительно хорошие учебники по nhibernate/activeRecored? Кроме того, как вы думаете, продолжительность активной записи будет высокой? Я ожидаю поддержки в течение 10 лет. Спасибо – Luke101

+0

К сожалению, на самом деле это не боль, но и не проблема. Очень легко сделать большую часть интеграции db с Active Record/NHibernate, а в онлайн-учебниках Castle вы найдете все, что вам нужно знать. Если на сайте замка не хватает, то быстрый поиск Google/Bing приведет к тому, что вы обнаружите много людей, которые ведут блоги о вещах, которые они выяснили, как с этим поступить. Насколько долго это будет вокруг. Его открытый источник, поэтому вам не нужно беспокоиться о том, что он «уходит», просто возьмите источник и скомпилируйте его самостоятельно, тогда вы всегда его получите. –

3

Я поклонник SubSonic от Rob Conery. Он (был) прост и прост в настройке и использовании.

+0

Сайт мертв и перенаправляется на спам. – frankhommers

+0

установить ссылку на git repo. – JonSG

5

Mindscape LightSpeed - это o/r mapper для.NET, что supports full text search (через Lucene, но расширяемый, чтобы вы могли добавить свой собственный).

Он также поддерживает LINQ, имеет Visual Studio integrated designer с полной схемой круглого отключения, так что вы можете работать на модель первых или базы данных первого - в зависимости от того вашего воображения :-)

Существует также бесплатная версия, которую вы можете использовать решить, подходит ли оно вам.

Я надеюсь, что это поможет.

5

Возможно, вы столкнулись с CodeFluent Entities, но вам нужно понимать, что он не полагается на ORM или сторонний инструмент.

Entity Framework - это ORM, тогда как CodeFluent Entities - это полная модель программного обеспечения . Он использует естественный и визуальный подход к моделированию (например, Entity Framework и интегрирован в Visual Studio) и может генерировать сценарии базы данных, объектно-ориентированный уровень данных - код (C#, VB), веб-сервисы и даже компоненты пользовательского интерфейса.

Смежные вопросы