gpt4 book ai didi

database - 是否可以使用 NHibernate 创建数据库?

转载 作者:太空狗 更新时间:2023-10-30 01:40:45 27 4
gpt4 key购买 nike

我将 NHibernate 与 FluentNHibernate 一起用于我的 DAL。我还使用 SchemaExportSchemaUpdate 来创建和更新我的数据库架构。

我的问题是模式操作都需要数据库存在才能工作。我想以编程方式创建我的数据库并更新模式,因为可能有多个数据库,并且数据库的创建不仅仅是一次性操作。

我知道我可以通过在与 master 数据库的连接上执行创建数据库命令来手动执行此操作,但考虑到我在其他情况下使用 NHibernate 进行所有数据库交互,这感觉不对。顺便说一句,我使用 SQLite 内存数据库进行单元测试,因此我编写的任何 sql 都必须知道我使用的是哪个数据库。

有没有办法让 NHibernate 为我创建数据库?

最佳答案

如果您开始使用域模型开发应用程序,我认为使用 NHibernate 创建数据库很好。我的意思是 - 它让您深入了解数据库的外观。但总的来说——应该使用 sql 脚本。

我听说一些开发人员使用 NHibernate 数据库生成进行集成测试,他们在运行时创建轻量级的 sqlite 数据库。

如何使用 NHibernate 生成数据库?我就是这样做的:

 public static void InitSessionFactory()
{
var connectionString =
ConfigurationManager
.ConnectionStrings["MyConnectionString"]
.ConnectionString;

var cfgFromXml = new Configuration();
cfgFromXml.Configure();

var cfg = Fluently.Configure(cfgFromXml)
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(x => x.Is(connectionString))
.UseReflectionOptimizer())
.Mappings(x => x.FluentMappings
.AddFromAssemblyOf<NHibernateBootstrapper>())
.ExposeConfiguration(BuildSchema);


ObjectFactory.Inject(cfg.BuildSessionFactory());
}

private static void BuildSchema(Configuration config)
{
//Creates database structure
//new SchemaExport(config)
// .Create(false, true);
}

关于database - 是否可以使用 NHibernate 创建数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/914371/

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