Mar*_*ers 54 .net nhibernate orm schema fluent-nhibernate
我试图弄清楚如何使用NHibernate配置与映射来更新表模式,而不是删除和重新创建它们.
目前我正在使用NHibernate.Tool.hbm2ddl.SchemaExport带有FluentNHibernate 的obj来为mysql数据库生成数据库模式.虽然我不能说这是一个很大的问题,但每当我调用SchemaExport.Execute数据库时,它都会删除所有表,然后重新创建它们.
如果我可以让它更新现有的表结构,尽可能保留数据,那会更酷.但我真的不想使用商业产品或代码生成器,因为我不喜欢一般的代码生成,而且我不需要这么多,我会考虑支付它.所以希望任何答案都会记住这些警告.
Mar*_*ers 67
所述SchemaUpdate工具对象提供数据库模式的更新,通过明显地生成和执行的一系列SQL UPDATE语句(以及约束语句)时,它的void Execute(bool script, bool doUpdate)
功能将被调用.SchemaUpdate类位于NHibernate.Tool.hbm2ddl命名空间中,可以在Nhibernate.dll文件中找到.
SchemaUpdate在nhibernate 1.0.2工具集指南的第15章中提到了这里(第15.1.5节).
"NHibernate FAQ"(链接现已过期)有一个更完整的示例,说明如何使用SchemaUpdate:
[Test]
public void Update_an_existing_database_schema()
{
_cfg = new Configuration();
_cfg.Configure();
_cfg.AddAssembly(Assembly.LoadFrom("DataLayer.dll"));
var update = new SchemaUpdate(_cfg);
update.Execute(true, false);
}
Run Code Online (Sandbox Code Playgroud)