Поддерживает ли 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 или просто подождать, пока они не выпустят новый релиз с этим.