2009-05-01 2 views
2

NHibernateを使用して記述されたデータアクセスレイヤを難読化しようとしています。問題は、クラスライブラリにリソースとして埋め込まれたXMLファイルでマッピングが行われることです。つまり、マッピングはクリアテキストで行われます。NhibernateベースのDAL難読化をフレンドリにする

2つの潜在的なソリューションが使用することを、次のとおりです。 1. NHibernateのマッピングは、マッピングされたエーテル:エンティティをdecoratする(NHMA)属性(難読化コードが実行されるときに、NHibernateのは、難読化されたクラス名にマップされます) 2.流暢NHibernateは(もう一度、マッピングはコード内にあるので、難読化は問題ではないはずです - 私は思っています)。

ここで、HQLを使用してクエリを実行すると、これらのソリューションは両方とも機能しません。クエリは元のクラスとフィールド/プロパティ名を参照するためです。

解決方法はありますか? NHMA/Fluentマッピングでエイリアス化されたクラス/プロパティ名を持つことはできますか?

NHibernate Criteria APIを使用するようにHQLクエリを変換すると、Criteria APIが役立ちますか?

(難読化のメリットとデメリット/無駄を知っていますが、それは役に立ちます)これを行うには!)

おかげで、

クリシュナを。

答えて

1

私が考えることができる唯一の解決策は、NHibernateにLinqを使用することです。現在、それはNHibernate Contrib Projectの一部であり、完全には安定していません。これは、現在 "Alpha"ステータスを持っており、安定しているはずのNHibernate 2.1リリースの一部になりますかなりすぐに。

マッピングについては、Fluent NHibernateを使用します。そして、LinqとFluent NHibernateはラムダ式を使うので、難読化で動作するはずです。

0

NHibernate Configurationオブジェクトは非常に柔軟です。電話で:

var lConfig = new Configuration(); 
lConfig.AddXmlString("whatever xml with config"); 

あなたはどんなソースからでも文字列を追加できます。これは、あなたのXMLがアセンブリで暗号化され、NHを設定するときに解読されることを意味します。

しかし、あなたが難読化の直後になっている場合、私はFluent NHがあなたの選択肢だと思っています。