LINUX.ORG.RU

[ORM] NHibernate и Linq

 


0

1

Пишу сайт на ASP.NET MVC. Пишу под оффтопиком в Студии, но с прицелом на кроссплатформенность. Самая загвозка, конечно была с СУБД. Связываться с MSSQL никак нельзя, с другой стороны все вкусности .Net в области баз данных заточены именно под вышеупомянутую СУБД, в частности очень удобный мэппинг ну и Linq-to-SQL, конечно.

Мэппинг я реализовываю с помощью NHibernate, но все-таки хотелось бы получить доступ и к фичам Linq. Относительно же недавно была выпущена библиотека NHibernate.Linq, но документации, ни тем более Getting started с howto я для нее не нашел пока.

Если вдруг кто-то уже имел с ней дело, подскажите, что там да как делается.

Всем спасибо.

З.Ы. FluentNHibernate пробовал, но то ли я идиот, то ли лыжи не едут, а только тест маппинга все время проваливается.

З.Ы.Ы. Знал бы хорошо английский, написал бы на stackoverflow.com

Всё очень просто. Пишешь:


using NHibernate.Linq;
using NHibernate.AdoNet;

....
// ну например как-то так
using (var ctx = NHibernateHelper.OpenSession()) // обычная сессия
{
    totalCount = (from h in ctx.Query<T>() select h).Count();
}
[[/code]]

где T - класс мэппинга таблицы.

anonymous
()

если пользовались monodevelop, что можете сказать о данной ide, можно ли ей сейчас пользоваться для обучения/разработки, или лучше не связываться?

anonymous
()
Ответ на: комментарий от anonymous

Monodevelop пользовался. Результаты такие:

1. Базовые типы проектов - консольные, библиотек классов в плане работы с кодом нареканий не вызвали, единственно, по понятным причинам, не реализованы заготовки проектов служб Windows хотя в самом Mono сборки, их поддерживающие вроде имеются;

2. Если речь идет о разработке графических приложений, то собственно выбор у вас невелик: либо создавать проекты на Gtk# используя визуальный редактор форм, либо вручную работать с WindowsForms. Все компоненты и наработки связанные с WPF не поддерживаются и поддерживаться не будут.

3. Что касается веб проектов. Имеется поддержка Moonlight/Silverlight до версии 2.0. Сейчас возможно уже добавили поддержку Silverlight 3. Что касается ASP.NET, то непосредственно ее я не смотрел, но она доступна в списке проектов Monodevelop.

4. ASP.NET MVC - сейчас поддерживается первая версия (в следующую версию IDE добавят поддержку ASP.NET MVC2). Однако есть как минимум один баг, до сих пор неисправленный: не работает мастер построения строго типизированных представлений, так что оформлять такого вида код вам придется вручную. Про поддержку разметки Razor пока можно не думать - она заявлена в Roadmap, но точной версии Monodevelop, где она будет присутствовать, не указано.

Вроде все.

LongLiveUbuntu ★★★★★
() автор топика
Ответ на: комментарий от LongLiveUbuntu

работаю с mono уже несколько лет. вот впечатления:

* ASP.NET практически непригоден. Постоянные проблемы, отпадания, ни одного стресс-теста не проходит. Проблемы с совместимостью, иногда на ровном месте (может начать ругаться на все Color=«#XXXXXX» в aspx (да, я знаю что его там не должно быть), были проблемы с кодировками - помогало только вынесение строк в App_GlobalResources). Может быть с ASP.NET MVC немного проще, но все равно - гнилая душонка ASP.NET остается. Про AJAX я вообще молчу.
* имеет свойство внезапно сжирать всю доступную память, спустя месяц монотонной работы.
* ThreadPool - лучше сразу свою имплементацию писать, изкоробочная сильно поглюкивает
* mod_mono - на удивление не много жрет. ~70-80MB. рельсы тут же рядышком - в 2 раза больше при схожих нагрузках.
* недавно - собрал тулзу на C#+Gtk# - работает, запускаю в винде - вылетает, запускаю в винде под mono (версия та же - 2.10.5) - просто тихо выходит (не работает). Вот так бывает.
* замечал падения в кору (SIGSEGV).

да, в новелловской багзилле участвую.

dib2 ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

если бы я сейчас принимал решение - то да, только +Groovy/Scala

вообще если чисто поучиться - то сойдет и mono, если в энтерпрайз - лучше не надо. по крайней мере пока.

dib2 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.