powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate и DbProviderFactory из ADO.NET
5 сообщений из 5, страница 1 из 1
NHibernate и DbProviderFactory из ADO.NET
    #36215652
SergASh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.

Имеется объект NHibernate.Cfg.Configuration, получаемый обычным способом
Код: plaintext
1.
2.
3.
4.
  using NHibernate; 
  using NHibernate.Cfg;
  // ..........
  Configuration cfg = new Configuration().Configure();
Под какую СУБД он сконфигурирован неизвестно. Требуется используя механизм DbProviderFactories открыть соединение и выполнить команду напрямую через ADO.NET, в обход NHibernate. Для этого делается примерно следующее
Код: plaintext
1.
2.
3.
4.
5.
6.
var providerFactory = DbProviderFactories.GetFactory( "System.Data.SqlClient" );
using ( var connection = providerFactory.CreateConnection() )
{
  connection.ConnectionString = "тут строка соединения";
  //...
}
При этом необходимо в качестве источника конфигурационных данных использовать указанный выше объект cfg.
Идея в том, чтобы использовать одни и те же настройки, что и NHibernate. Параметров нужно только два - строку соединения и строку-идентификатор провайдера. С первым проблем нет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public string ConnectionString
{
  get
  {
    var configuration = new Configuration().Configure();
    var connectionString = configuration.GetProperty( "connection.connection_string" );
    if ( connectionString != null )
      return connectionString;
    var connectionStringName = configuration.GetProperty( "connection.connection_string_name" );
    return ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;
  }
}
А вот как получить второй параметр непонятно. В случае SQL Server'а это должна быть строка "System.Data.SqlClient". Но ничего подобного в конфигурации NHibernate'а я не обнаружил.

Хардкодить категорически не хочется. Что можно сделать в таком случае?

Спасибо.
...
Рейтинг: 0 / 0
NHibernate и DbProviderFactory из ADO.NET
    #36216424
Dim@sty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergASh,

авторТребуется используя механизм DbProviderFactories открыть соединение и выполнить команду напрямую через ADO.NET, в обход NHibernate

А что хибер плохо открывает соединение? К чему этот изврат?
...
Рейтинг: 0 / 0
NHibernate и DbProviderFactory из ADO.NET
    #36216617
SergASh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огласите неизвратный способ с учетом того, что
SergASh
Требуется используя механизм DbProviderFactories открыть соединение и выполнить команду напрямую через ADO.NET, в обход NHibernate.
...
Рейтинг: 0 / 0
NHibernate и DbProviderFactory из ADO.NET
    #36216724
Dmitdd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть возможность прикрутить spring к приложению и использовать его dbprovider ?
...
Рейтинг: 0 / 0
NHibernate и DbProviderFactory из ADO.NET
    #36216970
SergASh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitddесть возможность прикрутить spring к приложению и использовать его dbprovider ?
Нет, не думаю. Ради такой мелочи тянуть этого монстра смысла нет. Пока пришлось обойтись таким вот способом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public string ProviderInvariantName
{
  get
  {
    switch ( GetNhibernateConfiguration().GetProperty( "connection.driver_class" ) )
    {
      case "NHibernate.Driver.SqlClientDriver":
        return "System.Data.SqlClient";
      default:
        throw new Exception( "Failed to determine provider invariant name" );
    }
  }
}
Но это мало отличается от хардкодинга.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / NHibernate и DbProviderFactory из ADO.NET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]