2012-02-28 13 views
1

私は.NET 2で作成された既存のNHibernateアプリケーションを持っています。これは、データクラス&すべてのhbm.xmlファイル用にコンパイルされたDLLを持つWinFormsアプリケーションです。hbm.xmlフィールド設定へのNHibernateアクセス

私が今やりたいことは、どのフィールドがヌル可能でないかをフォームに表示することです。ボーダーを赤に変更します。

問題フォーム上でバインドされたフィールドを循環させて、not-null = "false"(またはtrue)のパラメータを読み取ることができないようです。

どのような考えですか?

私は流暢NHibernateのに開いていますが、しかし、これはVB.NETのアプリです、と私は流暢NHibernateはのnoobのだ:-)限り、私はそれらを作ることができるよう、これを行うための他の方法に開いまた

アプリに合理的にフィット:-)

ありがとう!

答えて

2

マップされたすべてのエンティティに関してSessionFactoryMetaDataが含まれているため、hbm.XMLファイルディレクトリを読む必要はありません。エンティティのすべてのメタデータを見つける1つの方法は次のとおりです。

のSessionFactoryが構築された後: - 私の場合は

var metaData = SessionFactory.GetClassMetadata(typeof(Model.Entities.Client)); 
for (int i = 0; i < metaData.PropertyNames.Length -1; i++) 
{ 
    System.Diagnostics.Debug.Print(metaData.PropertyNames[i]); 
    System.Diagnostics.Debug.Print(metaData.PropertyNullability[i].ToString()); 
} 

を、私は次を得る: -

Name 
False 
Address1 
False 
Address2 
True 
... 
Postcode 
True 

プロパティは、エントリ

を期待しているという誤った手段NOT-NULLを忘れないでください

もう1つの方法は、モデルプロパティにDataAnnotationsを追加することです。

[Required(ErrorMessage = "You must supply a postcode")] 
public virtual string Postcode { get; set; } 

これは、winformsプロジェクトでこれを使用する方法を示す良い記事です。

+0

ありがとう、それは完全に働いた。 VB.NETのための要件を有するものについては、こちら同等です: '薄暗いのmetaDataのSystem.Type 点心としてNHibernate.Metadata.IClassMetadata 薄暗いtObjTypeように私の整数として tObjType = Model.Entities.Client.GetType() のmetaData = classGlobal.tFactory.GetClassMetadata(tObjType)I = 0 metaData.PropertyNames.Length System.Diagnostics.Debug.Print(metaData.PropertyNames(I)) System.Diagnostics.Debug.Print(metaData.PropertyNullabilityに(i).ToString()) 次へ ' フォーマットについてごめんなさい! – Dominik

関連する問題