首页 新闻 会员 周边

NHibernate中可空类型配置出错,一天了还未解决,请指教

0
悬赏园豆:100 [已解决问题] 解决于 2012-07-13 10:01

NHibernate中可空类型配置出错:

1. .hbm   

    <!-- 用户ID  -->
    <property name="UserID" type="System.Nullable`1[[System.Int64, mscorlib]], mscorlib">
      <column name="UserID" sql-type="bigint" length="8" not-null="false"/>
    </property>

 

2. Domain       

        private Int64? _UserID;
        /// <summary>
        /// 用户ID
        /// </summary>
        public virtual Int64? UserID
        {
            set { _UserID = value; }
            get { return _UserID; }
        }

 

3. 错误内容:    

在列“UserID0_0_”上的 GetBytes 尝试无效。GetBytes 函数只能用在 Text、NText 或 Image 类型的列上。

天涯人的主页 天涯人 | 初学一级 | 园豆:119
提问于:2012-07-12 17:40
< >
分享
最佳答案
0

将 <column name="UserID" sql-type="bigint" length="8" not-null="false"/>

改为 <column name="UserID"/> 试试

收获园豆:100
dudu | 高人七级 |园豆:30994 | 2012-07-12 17:49

经分析测式,是因为lentgh="8"引起,去掉该属性就成功了。

<column name="UserID" sql-type="bigint" length="8" not-null="false"/>

 

个人总结:Int64非可空类型时,加length是正确的;但为Int64?可空类型时,指定length后,会强制转换,导致出错。

天涯人 | 园豆:119 (初学一级) | 2012-07-13 10:03
其他回答(3)
0

是Int64?的错吗?为什么要加?呢,虽然好像见过,但是不知道为什么

我一般直接用 public virtual int ID { get; set; },

菜鸟入门,专业帮顶,希望有人能帮忙解决一下

幸福至上 | 园豆:20 (初学一级) | 2012-07-12 17:54

Int64?表示可空类型,对应DB中的null

支持(1) 反对(0) 天涯人 | 园豆:119 (初学一级) | 2012-07-12 17:57

@天涯人: 学习了

支持(0) 反对(0) 幸福至上 | 园豆:20 (初学一级) | 2012-07-12 17:59
0

用属性,不是用字段。。

不懂cc | 园豆:877 (小虾三级) | 2012-07-12 19:06
0

看这个的地方的配置,讲得非常的详细:http://www.cnblogs.com/lyj/archive/2009/10/04/nhibernate-northwind-example.html

悟行 | 园豆:12559 (专家六级) | 2012-07-12 19:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册