当前位置:  开发笔记 > 编程语言 > 正文

如何使用NHibernate模式生成更新数据库表模式?

如何解决《如何使用NHibernate模式生成更新数据库表模式?》经验,为你挑选了1个好方法。

我试图弄清楚如何使用NHibernate配置与映射来更新表模式,而不是删除和重新创建它们.

目前我正在使用NHibernate.Tool.hbm2ddl.SchemaExport带有FluentNHibernate 的obj来为mysql数据库生成数据库模式.虽然我不能说这是一个很大的问题,但每当我调用SchemaExport.Execute数据库时,它都会删除所有表,然后重新创建它们.

如果我可以让它更新现有的表结构,尽可能保留数据,那会更酷.但我真的不想使用商业产品或代码生成器,因为我不喜欢一般的代码生成,而且我不需要这么多,我会考虑支付它.所以希望任何答案都会记住这些警告.



1> Mark Rogers..:

所述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);
}


@Astaar:你的意思是从nvarchar(255)更改为nvarchar(45)不起作用?或者你的意思是架构更新根本不起作用?
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有