Nhibernate拦截器 - 获取属性长度OnSave

时间:2016-11-08 16:27:28

标签: c# asp.net-mvc nhibernate

我有简单的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;
}

任何帮助我怎么能得到这个?

1 个答案:

答案 0 :(得分: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;
}