我认为这更像是一个源代码控制问题。通常,数据库和软件版本应该齐头并进。有了良好的分支和合并策略,您就不应该遇到这种情况。您应该始终拥有与实际生产中的内容相关的源版本(在我看来)。
在我们发布软件/数据库版本的情况下,我们有一个对应于该版本的发布分支。如果需要在添加数据库列的地方进行软件更改,例如,我们将在其中完成工作的开发分支,并且当它准备好在生产中发布时,我们将创建一个与您刚才对应的新发布分支安装在生产中。
如果需要对生产版本进行错误修复,您可以从发布分支分支出来进行错误修复。一旦测试并部署到生产中,您就可以将错误修复分支中所做的更改合并回发布分支,以再次代表生产中的内容。然后,您还可以将该发布分支中的任何更改合并到您的“最新”/主分支。
这里有一些关于各种分支和合并策略的很棒的指南:http:
//vsarbranchingguide.codeplex.com/releases
但是要回答您的具体问题,我认为没有很好的方法可以做到这一点。如果它在映射中,nhibernate 将查询它并因此导致错误。
编辑:
您可以在 NHibernate 中做一些事情来只查看某些列。例如,在更新和插入上,您可以设置映射以进行动态插入和更新:
(7) dynamic-update(可选,默认为false):指定UPDATE SQL应该在运行时生成,并且只包含那些值发生变化的列。
(8)dynamic-insert(可选,默认为false):指定INSERT SQL应该在运行时生成,并且只包含值不为null的列。
以上摘自: http: //nhibernate.info/doc/nh/en/#mapping-declaration-class
同样在 nhibernate 查询中,您可以指定要查询的特定列:
IList selection =
session.QueryOver<Cat>()
.Select(
c => c.Name,
c => c.Age)
.List<object[]>();