これは何よりもソース管理の問題だと思います。通常、データベースとソフトウェアのバージョンは連動している必要があります。適切な分岐およびマージ戦略があれば、これに遭遇することはありません。実際に生産されているものに関連するバージョンのソースを常に用意する必要があります (私の意見では)。
ソフトウェア/データベースのバージョンがリリースされる状況では、そのバージョンに対応するリリース ブランチがあります。たとえば、データベース列が追加された場所でソフトウェアの変更を行う必要がある場合は、作業が行われた開発ブランチがあり、本番環境でリリースする準備ができたら、あなたが行ったものに対応する新しいリリース ブランチを作成します。生産にインストールされます。
製品版にバグ修正が必要な場合は、リリース ブランチから分岐してバグ修正を行うことができます。テストして本番環境にデプロイしたら、バグ修正ブランチで行われた変更をリリース ブランチにマージして、本番環境にあるものを再び表現します。次に、そのリリース ブランチからの変更を「最新」/メイン ブランチにマージします。
ここには、さまざまな分岐およびマージ戦略に関するいくつかの優れたガイドがあります:
http://vsarbranchingguide.codeplex.com/releases
しかし、あなたの特定の質問に答えるために、これを行う素晴らしい方法はないと思います。マッピングにある場合、nhibernate はそれを照会するため、エラーが発生します。
編集:
特定の列のみを表示するために Hibernate で実行できることがあります。たとえば、更新と挿入では、動的な挿入と更新を行うようにマッピングを設定できます。
(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[]>();