我有一个在.NET 2中创建的现有NHibernate应用程序,它是一个WinForms应用程序,它有一个为数据类编译的单独的DLL&所有的hbm.xml文件。
我现在要做的是在表单上显示哪些字段不可为空,将边框更改为红色。
问题是我似乎找不到可以在表单上循环遍历绑定字段(我能做到的)的任何地方,并读取not-null =“false”(或true)参数。
有什么想法吗?
我对Fluent NHibernate开放,但这是一个VB.NET应用程序,我是一个流利的Nhibernate菜鸟: - )
同样开放其他方式,只要我能够很好地适应应用程序: - )
谢谢!
答案 0 :(得分:2)
您不需要阅读hbm.XML文件目录,因为SessionFactory
包含MetaData
所有映射实体。查找实体的所有元数据的一种方法如下:
构建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
记住FALSE表示属性需要条目的NOT-NULL
另一种方法是将DataAnnotations
添加到模型属性中。
[Required(ErrorMessage = "You must supply a postcode")]
public virtual string Postcode { get; set; }
互联网上有很多文章向您展示如何在winforms项目中使用它。