gpt4 book ai didi

.net - Fluent NHibernate - 仅当不存在时才创建数据库模式

转载 作者:太空狗 更新时间:2023-10-30 01:38:32 24 4
gpt4 key购买 nike

我有一个应用程序,我在其中使用 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 不会进行破坏性更新(删除表、列等)。它只会添加它们。

关于.net - Fluent NHibernate - 仅当不存在时才创建数据库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com