架构更新后删除了流畅的NHibernate数据

3 database nhibernate fluent fluent-nhibernate

我正在使用Fluent NHibernate来处理我的数据库.

运行以下代码时,有些工作正常.一个函数更新表结构,这也有效,但我的数据已经消失.

ISessionFactory result = Fluently.Configure()
    .Database(MySQLConfiguration.Standard.ConnectionString(connectionString))
    .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Page>())
    .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
    .BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?必须更新表,但不得删除数据.

在来自流利NH的维基上,我找不到更多关于的信息ExposeConfiguration.

Ken*_*ick 15

SchemaExport(cfg).Create(true, true))正是这样做的.我没有使用Fluent,但基于我刚看过的一个项目,我认为应该是这样的SchemaUpdate(cfg).Execute(true,true)

编辑:由于这个答案似乎仍然有助于人们,这里有一个更长篇大论的解释.

这里的主要区别是我们正在创建的对象.该SchemaExport实例生成DDL以创建数据库.该Create方法生成脚本,第二个参数告诉它是否对数据库运行该脚本. Create调用Execute,传递其他参数,包括一个"不要只丢弃表,删除它并重新创建它"的参数.此类中没有选项不首先删除表.

SchemaUpdate实例是一个更复杂的野兽(内部),因为它查看现有的表并在当前表和配置中指定的表之间生成一个增量(我找不到这个的参考,我没看在代码中,我只知道它的工作原理).但在这两种情况下,参数基本相同.第一个是"输出ddl到控制台",第二个是"实际运行数据库的东西".