专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > .NET新技术

Nhibernate的T Get<T>(object id),参数id的类型不匹配时会出现错误

发布时间:2011-06-26 19:30:20 文章来源:www.iduyao.cn 采编人员:星星草
Nhibernate的T Get<T>(object id),参数id的类型不匹配时会出现异常


Nhibernate通过主键获取记录的方法是T Get<T>(object id);   由于id的类型是object, 这样,调用时,当出现类型不匹配(比如数据表的主键的类型是int,但传入的是诸如"2"这样的字符串)就会报类似如下异常:
Provided id of the wrong type. Expected: System.Int32, got System.String

因为是object类型,所以,尤其是团队开发,很难保证不出现上述异常。
可以通过这种方式解决,得到实体类型T的主属性,然后对参数id进行类型转换。 问题是如何能够得到C#实体类的主属性呢? 我已经用System.ComponentModel.DataAnnotations.Key属性修饰主属性了。     或者说,还有没有别的解决方式?是不是可以通过NHibernate的session解决呢?我刚接触NHibernate,不太熟悉, 请大家赐教。
------解决思路----------------------
一般来说,如果你设计一个程序时使用“空洞的超类型”,那么就无法保证开发质量,只能靠大规模不断测试,而且必须等待测试结果。所以设计时应该应该采用尽可能具体的类型,强类型来设计。你的id是string、long,还是你自己定义的接口(或者虚拟父类型)都可以,不应该仅仅当作object。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: