5

我需要帮助解决我的应用程序中的问题。

我在 Visual Studio 中创建了一个项目,并安装并配置了 Fluent NHibernate。我能够正确配置所有内容,并且能够连接到我的数据库。

我尝试在表中插入几行,一切正常,但每当我重新启动应用程序时,我注意到表被删除并重新创建,所有数据都消失了。

我通过使用解决了这个问题:

.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(true, true))

代替:

.ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))

到目前为止一切都很好,但现在问题来了。假设我有一个 Person.cs 类,它有两个字段:Id、Name。假设我想添加一个名为Address的新属性。我将该属性添加到我的班级并运行我的应用程序。我尝试添加几行并检查数据库以查看确实创建了一个名为 Address 的新列,并为旧条目插入了空值。

现在假设我改变主意并决定删除新的属性地址。我从我的 Person.cs 类中删除该属性并运行应用程序。我插入了一些条目并检查数据库以查看地址列没有被删除并且仍然存在于表中。

为什么会发生这种情况?映射配置不应该为我做所有事情吗?我希望将不再需要的列删除到数据库中,就像我向类中添加新属性时创建它们的方式一样,并且不会丢失我的数据。我应该怎么办?

4

1 回答 1

4

SchemaExport/SchemaUpdate 不是迁移框架。

他们只确保您的域可以与数据库一起使用,并且在开发过程中有用(而不是在生产中)

于 2013-03-11T02:05:31.073 回答