Кроссплатформенный ORM для C # это бесплатно, а не NHibernate? - PullRequest
0 голосов
/ 03 сентября 2011

У меня есть клиент, который хочет приложение ASP.NET MVC.Я разработаю его с помощью VS.NET 2010 Express, покажу его ему на моем сервере Linux во время его разработки (Mono поддерживает ASP.NET MVC), и он в конечном итоге разместит его на коммерческом провайдере, работающем под управлением IIS.

Быстро это сделать - так называется игра.Единственный кусок, который мне здесь не хватает - это слой базы данныхВ идеале я бы использовал SQL CE и EF4.Но SQL CE работает только в Windows, и Mono в любом случае не поддерживает Entity Framework.

Единственный бесплатный вариант Linq to SQL, который я вижу, - это DbLinq.Быстрый тест с этим в базе данных MySQL показал, что он содержит ошибку в таблице с двумя внешними ключами для одного первичного ключа.Поиск в Google показывает, что эта ошибка была обнаружена, и патч был создан примерно два года назад.То, что патч до сих пор не был применен к основному источнику, и что эта ошибка, кажется, влияет на столь распространенный сценарий, не дает мне уверенности в готовности DbLinq к производству.

Даже еслиэто работало, это должно было быть с MySQL, поскольку это единственная база данных, которую я могу ожидать, которая будет доступна как на Linux, так и на возможном сервере Windows.(SQLite, Berkeley DB и т. Д. Потребовали бы, чтобы на сервере были установлены некоторые собственные драйверы, на которые я не могу рассчитывать.)

Я не знаю NHibernate.Но из того, что я прочитал, это требует ручного создания файлов сопоставления XML ... поэтому мне не нужно писать операторы SQL, но мне нужно создавать файлы сопоставления?(Кроме того, мне нужно научиться пользоваться им.) Как я уже говорил выше: сделать это быстро - вот цель.

Если я должен, я просто потрачу 5 долларов в месяц или около того длядешевый хостинг-провайдер ASP.NET и используйте его для демонстрации прогресса клиенту, используя SQL CE и EF4.Но прежде чем я это сделаю, я бы хотел посмотреть, есть ли другие жизнеспособные варианты.(На данный момент это своего рода интеллектуальное упражнение.)

Итак ... есть какие-нибудь советы?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Это действительно должен быть полностью раздутый ORM?

Я рекомендую взглянуть на некоторые из так называемых "микроормий", особенно мой любимый: Peta-Poco (http://www.toptensoftware.com/petapoco/)

Peta-Poco отлично работает в режиме моно и обладает невероятной производительностью. Более того, благодаря небольшому размеру кода (~ 1 тыс. Строк в c #) очень легко понять, что происходит под капотом, и вы можете легко изменить / расширить код в соответствии с вашими потребностями. Для начала вам просто нужно скопировать один файл .cs в ваш проект, и вы готовы к работе.

Peta-Poco имеет очень хорошую эвристику poco-mapping, так что вы получите ваши объекты c # из БД с нулевой конфигурацией для большинства случаев.

1 голос
/ 03 сентября 2011

Вы МОЖЕТЕ попробовать Linq-to-SQL.Частично поддерживается в Mono начиная с версии 2.6, он поддерживает множество баз данных в режиме моно Примечания к выпуску Mono 2.6 (они работают с таковыми из DbLINQ, чтобы сделать это).

Ах ... Забудьте, чтобы быстро учитьсякак использовать nhibernate.Это очень хорошо, но это настоящий ад.И создание XML является наименьшим (и с NHibernate 3.2 они добавили свою версию интерфейсов Fluent, так что я думаю, что XML больше не нужен. Вы можете «кодировать» свой XML.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...