Dot-Net
Fluent NHibernate - 僅在不存在時創建數據庫模式
我有一個使用 Fluent Nhibernate 創建數據庫的應用程序。到目前為止,我每次都在重新創建數據庫模式。執行此操作的程式碼是這樣的:
public NhibernateSessionFactory(IPersistenceConfigurer config) { _sessionFactory = Fluently.Configure(). Database(config). Mappings(m => m.FluentMappings.AddFromAssemblyOf<MappingsPersistenceModel>()). ExposeConfiguration(BuildSchema). BuildSessionFactory(); } private static void BuildSchema(Configuration config) { // if (DbExists(config)) // return; new SchemaExport(config).Create(false, true); }注意“
if (DbExists(config))”。這就是我想做的。只有當它實際上不存在時,我才想創建它。在下一步中 - 如果它不是最新的,我想更新它以創建它。我如何實現這一目標?我期待一個
config.DatabaseExists(),但我看不到這樣的東西。我看到了一些 hacky 解決方案的可能性,但是典型的推薦處理方法是什麼?
您可以
SchemaUpdate改為使用,如果存在,它將更新架構,如果不存在,則創建它:public NhibernateSessionFactory(IPersistenceConfigurer config) { _sessionFactory = Fluently.Configure(). Database(config). Mappings(m => m.FluentMappings.AddFromAssemblyOf<MappingsPersistenceModel>()). ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true)). BuildSessionFactory(); }一個警告:
SchemaUpdate不進行破壞性更新(刪除表、列等)。它只會添加它們。