#oracle #nhibernate #odp.net #fluent
#Oracle #nhibernate #odp.net #свободно
Вопрос:
мой вопрос:
Я пытаюсь использовать Oracle.DataAccess.Client
Provider с NHibernate (свободно), и я настроил его следующим образом:
Fluently.Configure().Database(OracleClientConfiguration.Oracle10.Provider("Oracle.DataAccess.Client").ConnectionString(c => c.FromConnectionStringWithKey("ORACLE1"))).
и у меня эта ошибка:
"Could not load type Oracle.DataAccess.Client. Possible cause: no assembly name specified.":"
Я уже добавляю ссылку на Oracle.Dataaccess
dll (ODAC) с copy local = true, но ошибка сохраняется…
Есть предложения?
Ответ №1:
Вот рабочий фрагмент кода:
public static void InitializeNHibernate()
{
var configurer = (OracleClientConfiguration.Oracle10.ShowSql().ConnectionString(c =>
c.FromConnectionStringWithKey("development"))
.DefaultSchema("myschema")
.UseReflectionOptimizer()
.Cache(c =>
c.ProviderClass<SysCacheProvider>()
.UseQueryCache()));
var cfg = Fluently.Configure()
.Database(configurer)
.Mappings(m =>
{
m.FluentMappings
.AddFromAssemblyOf<Employee>()
.Conventions.Add<OracleDateTimeTypeConvention>();
m.HbmMappings
.AddFromAssemblyOf<Employee>();
})
.ExposeConfiguration(configuration =>
{
configuration.SetProperty(Environment.Hbm2ddlKeyWords, "auto-quote");
configuration.SetProperty(Environment.GenerateStatistics, "true");
configuration.SetProperty(Environment.CurrentSessionContextClass, "web");
configuration.SetProperty(Environment.CommandTimeout, "60");
});
}
Без указания поставщика он автоматически выбирает Oracle DataAccess.
Редактировать: Это не распознается автоматически, у меня просто есть это в строке подключения:
<add name="development" connectionString="Data Source=XXX;User ID=yyy;Password=zzz;" providerName="Oracle.DataAccess.Client"/>
Комментарии:
1. Вы уверены, что он использует Oracle DataAccess?? разве это не использует System.Data. Клиент OracleClient?
2. Я уверен. Если я удалю ссылку, она будет запрашивать именно ее. К вашему сведению, вам не нужен System.Data. OracleClient в качестве ссылки.
3. я тоже пытался ProviderName =»Oracle. Доступ к данным. Клиент» в строке подключения, но, похоже, это игнорируется.
4. Как вы разместили Oracle. Доступ к данным. Клиент на вашем компьютере? XCOPY или install, поскольку ADO.NET в файлах конфигурации должны быть ссылки на поставщиков (см. machine.config для примера поставщика SQL Server).
5. Установил его. Это не отображалось в моих параметрах <добавить ссылку>, поэтому я добавил его вручную.