NHibernate SVN源码的一点小错误

最近学起了NHibernate。从SVN上把它的代码下下来,跟着文档用NHibernate.Tool.hbm2ddl里的SchemeExport来创建数据库,结果在创建一个标准的小Cat表时抛出异常:“Cannot define PRIMARY KEY constraint on nullable column in table…”。可我已经在hbm里定义了“<column name="CatId" sql-type="char(32)" not-null="true"/>”啊。

经过N次的设断点Debug,终于在ClassIdBinder.cs的223行看到了这么一句代码:

column.IsNullable = columnSchema.notnullSpecified ? columnSchema.notnull : false;

这句代码很明显有问题,翻译成中文大概是:如果scheme里定义了notnull这个属性,那么将IsNullable属性设为notnull属性。

OK,问题似乎找到了,加个!后重新编译执行创建表成功:

column.IsNullable = columnSchema.notnullSpecified ? !columnSchema.notnull : false;

 

后来我又把SF上发布的2.0.1GA的binary下载下来,用Reflector看了一下,也是一样的错误代码。。。

posted @ 2008-11-21 16:22  XIN...  阅读(280)  评论(0编辑  收藏  举报