2010-07-16 26 views
5

Tôi là thương hiệu mới với NHibernate và Fluent NHibernate và tôi đang cố gắng để có được sự hợp nhất sau đây để làm việc.Fluent NHibernate - Cấu hình nhà cung cấp dữ liệu Oracle ODP

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(); 

    } 

Tôi có tham chiếu Oracle.DataAccess được tham chiếu. Tôi đang sử dụng VS 2010 và Net 4

tôi nhận được ngoại lệ sau đây:

FluentNHibernate.Cfg.FluentConfigurationException là unhandled nhắn = Một cấu hình không hợp lệ hoặc không đầy đủ đã được sử dụng trong khi tạo ra một SessionFactory. Kiểm tra bộ sưu tập PotentialReasons và InnerException để biết thêm chi tiết.

Source = FluentNHibernate StackTrace: tại FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() trong d: \ xây dựng \ FluentNH \ src \ FluentNHibernate \ CFG \ FluentConfiguration.cs: dòng 98 tại HibernateLearning.Program.CreateSessionFactory() trong C: \ Projects \ CPS Test Concepts \ Main \ Source \ CPSTestConcepts \ Source \ HibernateLearning \ Program.cs: dòng 48 tại HibernateLearning.Program.Main (String [] args) trong C: \ Projects \ CPS Test Concepts \ Main \ Source \ CPSTestConcepts \ Source \ HibernateLearning \ Program.cs: dòng 21 tại System.AppDomain._nExecuteAssembly (assembly AssemblyAssembly, String [] args) tại System.AppDomain.ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] args) tại Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() tại System.Threading.ThreadHelper.ThreadStart_Context (Trạng thái đối tượng) tại System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) at System.Threading.ExecutionContext.Run (ExecutionContext executeContext, ContextCallback callback, Object state) tại System.Threading.ThreadHelper.ThreadStart() InnerException: NHibernate.HibernateException Message = Không thể tạo trình điều khiển từ NHibernate.Driver.OracleDataClientDriver, NHibernate , Phiên bản = 2.1.2.4000, Văn hóa = trung lập, PublicKeyToken = aa95f207798dfdb4. Source = NHibernate StackTrace: tại NHibernate.Connection.ConnectionProvider.ConfigureDriver (IDictionary 2 settings) at NHibernate.Connection.ConnectionProvider.Configure(IDictionary 2 cài đặt) tại NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider (IDictionary 2 settings) at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary 2 tài sản) tại NHibernate.Cfg.Configuration.BuildSettings() tại NHibernate.Cfg.Configuration.BuildSessionFactory() tại FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() trong d: \ Builds \ FluentNH \ src \ FluentNHibernate \ Cfg \ FluentConfiguration.cs: dòng 93 InnerException: System.Reflection.TargetInvocationException Thư = Ngoại lệ đã được ném bởi mục tiêu của một lời gọi. Source = mscorlib StackTrace: tại System.RuntimeTypeHandle.CreateInstance (loại RuntimeType, Boolean publicOnly, Boolean nocheck, Boolean & canBeCached, RuntimeMethodHandleInternal & ctor, Boolean & bNeedSecurityCheck) tại System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, Boolean skipCheckThis, boolean fillCache) tại System.RuntimeType.CreateInstanceDefaultCtor (boolean publicOnly, boolean skipVisibilityChecks, boolean skipCheckThis, boolean fillCache) tại System.Activator.CreateInstance (Type type, boolean không công khai) tại System.Activator.CreateInstance (Type type) tại NHibernate.Bytecode.ActivatorObjectsFactory.Creat eInstance (Loại loại) tại NHibernate.Connection.ConnectionProvider.ConfigureDriver (IDictionary`2 cài đặt) InnerException: NHibernate.HibernateException Thông báo = IDbCommand và IDbConnection thực hiện trong lắp ráp Oracle.DataAccess không thể được tìm thấy. Đảm bảo rằng assembly Oracle.DataAccess nằm trong thư mục ứng dụng hoặc trong Cache Assembly toàn cầu. Nếu assembly nằm trong GAC, sử dụng phần tử trong file cấu hình ứng dụng để chỉ định tên đầy đủ của assembly. Source = NHibernate StackTrace: tại NHibernate.Driver.ReflectionBasedDriver..ctor (String driverAssemblyName, String connectionTypeName, String commandTypeName) tại NHibernate.Driver.OracleDataClientDriver..ctor() InnerException:

+0

Tại sao đây là một wiki? – DCookie

+0

Tôi đã nhấp vào nó do nhầm lẫn. Lấy làm tiếc. Làm cách nào để xóa cờ wiki? –

+0

Bạn không thể. Bạn chỉ có thể xóa và đăng lại. Nó không phải là một vấn đề lớn, bạn chỉ sẽ không nhận được bất kỳ điểm danh tiếng nếu nó được upvoted. – DCookie

Trả lời

7

I figured it out . Khi bạn tham chiếu ODP, bạn phải đặt thuộc tính bản sao cục bộ của tham chiếu thành true nếu không nó sẽ không tìm thấy các đối tượng mà nó đang tìm kiếm.

Một trở ngại, tôi chắc chắn sẽ có nhiều hơn nhưng tôi yêu những công cụ này!

Paul

0

Bạn cũng có thể nhận được vấn đề này nếu bạn có sự không phù hợp giữa các nền tảng của dll ODP và nền tảng ứng dụng của bạn (x86 vs x64). Thay đổi dự án của bạn để biên dịch dựa trên nền tảng chính xác.

Các vấn đề liên quan