2010-05-06 40 views
5

Tôi muốn tạo tập lệnh cơ sở dữ liệu mà không có chuỗi kết nối cơ sở dữ liệu thực tế được khai báo.Xuất sắc NHibernate ExportSchema mà không cần chuỗi kết nối

Để làm điều này cho bây giờ tôi sử dụng các căn cứ NHibernate ExportSchema trên một cấu hình NHibernate tạo ra với thành thạo NHibernate cách này (trong phương pháp sáng tạo ISessionFactory của tôi):

FluentConfiguration configuration = Fluently.Configure();    
//Mapping conf ... 
configuration.Database(fluentDatabaseProvider); 
this.nhibernateConfiguration = configuration.BuildConfiguration(); 
returnSF = configuration.BuildSessionFactory();  

//Later 
new SchemaExport(this.nhibernateConfiguration)    
       .SetOutputFile(filePath) 
       .Execute(false, false, false);  

fluentDatabaseProvider là một IPersistenceConfigurer FluentNHibernate đó là cần thiết để có được thích hợp phương ngữ sql để tạo cơ sở dữ liệu.

Khi nhà máy được tạo bằng cơ sở dữ liệu hiện có, mọi thứ đều hoạt động tốt. Nhưng những gì tôi muốn làm là tạo ra một đối tượng cấu hình NHibernate trên một cơ sở dữ liệu được chọn mà không có một cơ sở dữ liệu thực sự đằng sau hiện trường ... Và tôi không quản lý để làm điều này.

Nếu có ai đó có ý tưởng nào đó.

+0

Bạn có tìm thấy câu trả lời cho điều này không? Tôi có cùng yêu cầu. – longday

Trả lời

0

Hãy thử sử dụng:

.Create(false, false); 

inplace của

.Execute(false, false, false); 

Đừng thêm thuộc tính ConnectionString cho IPersistenceConfigurer (fluentDatabaseProvider).

+0

Bạn nói đúng là nó đang hoạt động. Cảm ơn bạn! – Vince

1

Đây là những gì tôi đã sử dụng. Lỗi của tôi là gọi BuildSessionFactory để kết nối với cơ sở dữ liệu:

 var config = Fluently.Configure() 
      .Database(MsSqlConfiguration.MsSql2008) 
      .Mappings(m => 
      m.FluentMappings.AddFromAssemblyOf<SessionManager>()); 

     new SchemaExport(config.BuildConfiguration()) 
       .SetOutputFile(filedestination) 
       .Create(false, false); 
Các vấn đề liên quan