Какой ORM использовать с SQL Azure?
Просто интересно, что все мысли о том, что ORM использовать для SQL Azure?
Мне довольно удобно использовать LINQ-to-SQL, и я считаю, что можно заставить его работать с SQL Azure. Однако, из моего понимания (исправьте меня, если я ошибаюсь), дальнейшие улучшения не будут внесены в Linq-to-SQL в будущих версиях платформы .NET?
В качестве альтернативы существует инфраструктура сущности... и дальше от Microsoft Camp находится NHibernate.
В идеале любые дополнительные предложения должны быть бесплатными или с открытым исходным кодом. Я видел Telerik ORM, но это, конечно, коммерческий продукт.
Я могу получить определения/преимущества каждого ORM самостоятельно, выполнив поиск в Google, но меня интересовало мнение людей о том, какой ORM, по-видимому, лучше подходит для них (даже если это ни один из вышеперечисленных)
Ответы
Ответ 1
На данный момент мы используем NHibernate на Azure и находим это довольно хорошо.
Поскольку мы используем s # arp architecture, чтобы предоставить большинство сантехнического кода для NHibernate и Dependency Injection, мы можем получить проекты, которые быстро запущены с хорошей прочной основой. Все сказали, что это довольно безболезненно, но при первом запуске может возникнуть крутая кривая обучения с NHibernate.
Я не уверен, что вы знаете о Fluent NHibnerate - http://fluentnhibernate.org - но это отличный инструмент и автоматически отображает ваши бизнес-объекты в вашу базу данных. Разумеется, он может быть настроен на любое поведение, которое вам нужно.
Ответ 2
DataObjects.Net поддерживает SQL Azure. Он доступен под GPL (но не LGPL - то есть, если GPL слишком строг для вас, вы должны приобрести коммерческую лицензию).
Ответ 3
Недавно я влюбился в подход Entity Framework 4.0 "Code First" к ORM/сохранению данных.
Не ошибитесь - EF4.0 светлее, чем предыдущие версии EF, и продвигает EF в качестве истинного конкурента на рынке ORM.
Прочитайте Hanselman первый демо-код EF script из PDC 2010 или Проход Скотта Гатри из Code First:)
Ответ 4
Проверьте NHibernate. Вероятно, верхняя часть линии прямо сейчас.
В противном случае хороший ресурс всегда http://www.ormbattle.net/
Ответ 5
Я использую Linq-to-SQL с моей базой данных SQL Azure. У меня есть простая индивидуальная модель между моими классами и таблицами базы данных, поэтому она является самым простым решением и работает префектно (несколько сбоев SQL Azure в стороне).
Вопрос Entity Framework vs LINQ to SQL ответит на этот вопрос.
Ответ 6
Я использую Entity Framework 1.0 довольно успешно, и я уверен, что 4.0 будет еще лучше, особенно с поддержкой POCOs (так что с начала вы свободны от объектов, связанных с контекстом). Любая версия, поддержка LINQ делает огромную разницу, как только вы ее повесить.
Но я бы сказал, что вы должны рассматривать любой ORM как просто вариант - если вы настроили свой уровень доступа к данным для использования шаблонов Unit of Work и Repository, а затем используйте свой любимый контейнер Inversion of Control, чтобы ввести конкретное имплантацию, то вы получаете немного больше работы, но гораздо более долгосрочную свободу. Кто действительно заботится о том, где данные или как вы получаете его за определенный уровень, это то, что вы делаете с ним, что считается
что я считаю...
Тоби
Ответ 7
Джейми,
Как и Тоби, я успешно использовал EF. Я очень рекомендую. Обратите внимание, что, поскольку я отправляю это, мне пришлось сгенерировать модель из локальной версии нашей схемы. Это не сделка с торгами, но стоит упомянуть. Ожидайте, что это изменится в будущем.
Ян