Поддерживает ли Nhibernate Sybase?

Я собираюсь начать работу над новым приложением WPF с хранилищем данных Sybase. Команда имеет опыт работы с Nhibernate, но мы не совсем уверены, насколько хорошо он поддерживает Sybase и есть ли какие-то серьезные подводные камни, на которые стоит обратить внимание.

Если да, то как насчет Fluent nhibernate?

Если нет, знаете ли вы какие-либо другие продукты ORM, которые мы могли бы использовать для Sybase в этом сценарии?

Благодарю.

5 ответов

Решение

По этой ссылке я бы сказал, что так и есть. Там, кажется, есть известные проблемы, хотя. Но в зависимости от того, что вам нужно, это может удовлетворить ваши потребности.

Кажется, что SQLAnywhere12Dialect исправил некоторые ошибки.

Sybase официально поддерживается в NHibernate.

Из того, что я видел, Fluent NH не предоставляет класс для настройки БД Sybase, но вы, вероятно, можете сделать это всего за пару строк (остальная часть не зависит от БД)

Вы спрашиваете о Sybase ASE или Sybase Anywhere. NHibernate поддерживает оба, а FluentNHibernate не поддерживает ни того, ни другого.

Я хотел бы исправить сделанные здесь заявления, хотя это более старая запись. NHibernate не совсем поддерживает Sybase.

В качестве ссылки, почему я говорю это утверждение, пожалуйста, посмотрите здесь: http://community.jboss.org/wiki/DatabasessupportedbynHibernate

Этот пост был опубликован в 2009 году. С тех пор NHibernate выпустила версию 3.0, в которой есть доступные для Sybase диалекты: http://nhforge.org/blogs/nhibernate/archive/2010/12/05/nhibernate-3-0-released.aspx

Но проблема здесь в том, что это только для Sybase Anywhere, поэтому, если у вас есть ASE, вам придется обратиться к независимым релизам Гленна Полли для NHibernate, и я не верю, что он на самом деле связан с NHibernate.

Несмотря на это, последние несколько часов я пытался выяснить, что работает с Sybase ASE 15, и у меня ничего не вышло. Похоже, я просто сделаю свой собственный с предоставленными драйверами.NET.

Я сделал аналогичный проект, используя NHibernate, и, используя ODBC для подключения к Sybase SQL Anywhere, он отлично работает с GenericDialect. Вот пример кода для создания фабрики сеансов.

var mapper = new ModelMapper();
mapper.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());
HbmMapping mapping = mapper.CompileMappingForAllExplicitlyAddedEntities();

NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration()
                    .DataBaseIntegration(db =>
                    {
                        db.ConnectionString = connectionStr;
                        db.Dialect<NHibernate.Dialect.GenericDialect>();
                        db.Driver<NHibernate.Driver.OdbcDriver>();
                    });
    
cfg.AddMapping(mapping);
cfg.BuildSessionFactory();

Чтобы продолжить ответ Джозефа:

Я загрузил двоичные файлы для NHibernate 3.2.0.GA около двух недель назад (около 10.10.2011), и он, похоже, не поставляется с поддержкой ASE 15 из коробки (без диалекта или драйверов, самым близким из которых может быть SQL) В любом месте).

Эта проблема была сообщена в их Jira.

Сегодня (20.10.2011) я скачал исходный код проекта, чтобы попытаться добавить свой, и обнаружил, что сейчас есть классы, предлагающие такую ​​поддержку, SybaseASE15Dialect.cs и SybaseASEDriver.

Я не уверен, что у бинарных файлов теперь есть эта поддержка, но если нет, то вы можете просто скачать исходные файлы, собрать проект NHibernate и использовать dll или просто подождать, пока они не выпустят новый релиз с этим.

Другие вопросы по тегам