流畅的NHibernate:SchemaExport和SchemaUpdate

时间:2013-03-10 22:03:57

标签: sql visual-studio nhibernate fluent-nhibernate

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

我在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的新列,并为旧条目插入了 null 值。

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

为什么会发生这种情况?映射配置不应该为我做一切吗?我希望不再需要的列在数据库中被删除的方式与我向类中添加新属性并且不丢失数据时创建它们的方式相同。我该怎么办?

1 个答案:

答案 0 :(得分:3)

SchemaExport / SchemaUpdate不是迁移框架。

他们只确保您的域可以与数据库一起使用,并且在开发期间(非生产中)非常有用