我有简单的NHibernate拦截器和重写方法OnSave()。
现在,我要在此处执行的操作是获取字符串属性的SQL长度。
那可能吗。
我可以看到属性IType[]
类型包含SqlType
,其中Length
可用,但是找不到如何读取它。调试示例:
这是我所拥有的代码的示例,并且在这里我试图获取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;
}
有什么帮助我可以得到这个吗?
最佳答案
让我们尝试将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;
}