2016-11-08 3 views
3

私は単純なNHibernateインターセプタを持ち、OnSave()メソッドをオーバーライドしています。Nhibernateインターセプタ - プロパティ長の取得OnSave

ここで私がしようとしているのは、文字列プロパティのSQL長を取得することです。それが可能ですか?

IType[]タイプのタイプはSqlTypeです。ここでは、Lengthが利用できますが、それを読み取る方法は見つかりません。デバッグの例:

enter image description here

これは私が持っているコードの例であり、どこでプロパティのSQLの長さを取得しようとしています。

public override bool OnSave(object entity, object id, object[] state, string[] propertyNames, IType[] types) 
{ 
    for (int i = 0; i < propertyNames.Length; i++) 
    { 
     //If type is string 
     if (types[i].GetType() == typeof(NHibernate.Type.StringType)) 
     { 
      //Get SQL length of string property 
     } 
    } 

    return false; 
} 

どのように私はこれを得ることができますか?

答えて

2

ちょうど意図したものにITypeをキャストしてみましょう:

//If type is string 
var stringType = types[i] as NHibernate.Type.StringType; 

//if (types[i].GetType() == typeof(NHibernate.Type.StringType)) 
if(stringType != null) 
{ 
    //Get SQL length of string property 
    var length = stringType.SqlType.Length; 
} 
+1

おかげで、これは働いていました! – carpics

関連する問題