2009-02-18 23 views
8

Gần như chắc chắn là một câu hỏi ngu ngốc nhưng tôi không thể tìm thấy câu trả lời ở bất cứ đâu.Thông thạo NHibernate - cách cấu hình cho oracle?

Trong Getting Started tutorial cơ sở dữ liệu SQLite và do đó phiên mình máy tạo được thực hiện bằng cách sử dụng lớp SQLiteConfiguration trong không gian tên FluentNHibernate.Cfg.Db

Tuyệt vời! Nhưng tôi không thấy một lớp cấu hình để sử dụng một cơ sở dữ liệu Oracle. Làm thế nào để tôi làm điều này?

Được đăng chéo vào fluent NH mailing list (with answer)

Trả lời

8

Điều này phù hợp với tôi. Hi vọng điêu nay co ich!

private static ISessionFactory CreateSessionFactory() 
    { 

     var cfg = OracleClientConfiguration.Oracle9 
      .ConnectionString(c => 
       c.Is("DATA SOURCE=<<NAME>>;PERSIST SECURITY INFO=True;USER ID=<<USER_NAME>>;Password=<<PASSWORD>>")); 

     return Fluently.Configure() 
       .Database(cfg) 
       .Mappings(m => m.FluentMappings.AddFromAssemblyOf<CLASS_NAME>().ExportTo(@".\")) 
       .ExposeConfiguration(BuildSchema) 
     .BuildSessionFactory(); 
    } 

    private static void BuildSchema(NHibernate.Cfg.Configuration config) 
    { 
     // this NHibernate tool takes a configuration (with mapping info in) 
     // and exports a database schema from it 
     new SchemaExport(config) 
      .Create(false, true); 
    } 
+0

Vâng, tôi nghĩ bạn đang sử dụng bản vá đã được gửi kể từ khi tôi đăng bài này –

+0

Bạn có ví dụ về nguồn dữ liệu khi tạo cơ sở dữ liệu không? –

+0

Nó chỉ là nguồn dữ liệu Oracle bình thường. Điều này sẽ giúp đỡ? http://stackoverflow.com/questions/11400794/oracle-odp-net-connection-string-what-goes-in-data-source – kimsk

3

Điều này có giúp ích cho bạn không?

http://tiredblogger.wordpress.com/2008/12/04/persistanceconfiguration-for-oraclefluent-nhibernate/

Edit: Mã đề cập sử dụng lớp ConnectionStringExpression mà không còn tồn tại ở thành thạo NHibernate. Tuy nhiên, lớp đó không được sử dụng cho bất kỳ mục đích nào khác ngoài việc giữ trường OracleConfiguration _config. Bạn có thể an toàn, thêm trường vào lớp OracleConnectionStringExpression và loại bỏ nó.

Vấn đề còn lại là NHibernate bây giờ sẽ vì một số lý do tìm kiếm các thành phần không có trong bản dựng hiện tại của Oracle.DataAccess. Nếu bạn muốn đối phó với điều đó, bạn có thể làm những gì mà healthblogger đã làm here.

+0

Tôi nghĩ vậy .... cảm ơn rất nhiều! –

+0

Mặc dù vậy, anh ta nhận được COnnectionStringExpression ở đâu? –

+0

Ai đó đã gửi một bản vá, bây giờ có thể cấu hình từ FNH –

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