Свободный NHibernate - настройка Oracle Data Provider ODP

Я новичок в NHibernate и Fluent NHibernate, и я пытаюсь заставить работать следующую конфигурацию.

private static ISessionFactory CreateSessionFactory()
{
     return Fluently.Configure() 
       .Database(
       OracleDataClientConfiguration.Oracle10.ConnectionString("Data Source=mysource;User ID=myid;Password=mypwd;")                  
          )
         .Mappings(m =>
            m.FluentMappings.AddFromAssemblyOf<Program>())
         .BuildSessionFactory();

    }

У меня есть ссылка на сборку Oracle.DataAccess. Я использую VS 2010 и .Net 4

У меня следующее исключение:

Исключение FluentNHibernate.Cfg.FluentConfigurationException было необработано. Сообщение = При создании SessionFactory использовалась недопустимая или неполная конфигурация. Проверьте коллекцию PotentialReasons и InnerException для получения дополнительных сведений.

Я понял. Когда вы ссылаетесь на ODP, вы должны установить для свойства copy local ссылки значение true, иначе он не найдет объекты, которые ищет.


person Community    schedule 16.07.2010    source источник
comment
Вы не можете. Можно только удалить и перепостить. Это не имеет большого значения, вы просто не получите очков репутации, если за него проголосуют.   -  person Paul Speranza    schedule 16.07.2010
comment
Source = FluentNHibernate StackTrace: в FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory () в d: \ Builds \ FluentNH \ src \ FluentNHibernate \ Cfg \ FluentConfiguration.cs: строка 98 в HibernateLearning.Cfg.CreateSession Test Concepts \ Main \ Source \ CPSTestConcepts \ Source \ HibernateLearning \ Program.cs: строка 48 в HibernateLearning.Program.Main (String [] args) в C: \ Projects \ CPS Test Concepts \ Main \ Source \ CPSTestConcepts \ Source \ HibernateLearning \ Program.cs: строка 21 в System.AppDomain._nExecuteAssembly (сборка RuntimeAssembly, аргументы String []) в System.AppDomain.ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] args) в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly () в System.Threading.ThreadHelper.ThreadStart_Context (состояние объекта) в System.Threading.ExecutionContext.Run (ExecutionContext ExecutionContext, обратный вызов ContextCallback, состояние объекта, логическое значение ignoreSyncCtx ) в System.Threading.ExecutionContext.Run (ExecutionContext executionContext, обратного вызова ContextCallback, состояние объекта) в System.Threading.ThreadHelper.ThreadStart () InnerException: NHibernate.HibernateException Message = Не удалось создать драйвер из NHibernate.Driver.OracleDataClientDriver, NHibernate.Driver.OracleDataClientDriver, NHibernate.Driver.OracleDataClientDriver, Версия = 2.1.2.4000, культура = нейтральная, PublicKeyToken = aa95f207798dfdb4. Источник = NHibernate StackTrace: в NHibernate.Connection.ConnectionProvider.ConfigureDriver (параметры IDictionary_2_2) в NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider (свойства IDictionary_3_2) в NHibernate.Cfg.Configuration.BuildSettings.actory () в NHibernate.Cfg.Configuration.BuildSettings.actory () в NHibernate.Configuration.BuildSettings.actory () в NHibernate.Configuration.BuildSettings.actory () в NHibernate.Configuration.BuildSettings.actory () в NHibernate.Configuration.BuildSettings.actory () FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory () в d: \ Builds \ FluentNH \ src \ FluentNHibernate \ Cfg \ FluentConfiguration.cs: строка 93 InnerException: System.Reflection.TargetInvocationException Сообщение = исключение при вызове цели. Источник = mscorlib StackTrace: в System.RuntimeTypeHandle.CreateInstance (тип RuntimeType, логическое publicOnly, логическое noCheck, логическое и canBeCached, RuntimeMethodHandleInternal и ctor, логическое и bNeedSecurity.Checkecurity. RuntimeType.CreateInstanceDefaultCtor (Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) в System.Activator.CreateInstance (Type type, Boolean nonPublic) в System.Activator.Createbase типе (NHreateCreatebjects) в System.Activator. ) в NHibernate.Connection.ConnectionProvider.ConfigureDriver (настройки IDictionary`2) InnerException: NHibernate.HibernateException Message = Не удалось найти реализацию IDbCommand и IDbConnection в сборке Oracle.DataAccess. Убедитесь, что сборка Oracle.DataAccess находится в каталоге приложения или в глобальном кэше сборок. Если сборка находится в GAC, используйте элемент в файле конфигурации приложения, чтобы указать полное имя сборки. Источник = NHibernate StackTrace: в NHibernate.Driver.ReflectionBasedDriver..ctor (String driverAssemblyName, String connectionTypeName, String commandTypeName) в NHibernate.Driver.OracleDataClientDriver..ctor () InnerException:   -  person DCookie    schedule 16.07.2010


Ответы (2)


Одно препятствие вниз, я уверен, что их будет больше, но я люблю эти инструменты!

Павел

Вы также можете столкнуться с этой проблемой, если у вас есть несоответствие между платформами библиотеки DLL ODP и платформой вашего приложения (x86 против x64). Измените свой проект, чтобы он компилировался на правильной платформе.

person Community    schedule 20.07.2010

Я щелкнул по ошибке. Извините. Как убрать флаг вики?

person Community    schedule 04.03.2011