NHibernate随笔(2)

2009-07-20  籽藤 

 尽管在《NHibernate随笔(1)》中,已经提到了由于CodeSmith版本问题,需要修改**.hbm.xml中xmlns="urn:nhibernate-mapping-2.2"。但我总是忘记,故再次强调。(CodeSmith5.1 NHibernate2.0)

 今天在练手的时候,session.Save(blog)方法出错了:用户代码未处理GenericADOException could not insert:[Model.Blog][SQL:INSERT INTO Blog(name,items)values(?,?);select SCOPE_IDENTITY()]

 当时有点莫名其妙,我的Bolg明明有三个字段的,怎么insert的sql语句里没有“ID”嘞?

 事实上,这是Blog构造函数导致的。

 public Blog( string name, string items )
  {
   this._name = name;
   this._items = items;
  }

 不知道为什么CodeSmith要这样生成,我在数据库中的ID并没有标识增量,它是varchar型的。Blog.hbm.xml对ID有<generator class="native" />(),为什么它要这样地生成呢?呵呵 这恐怕要问Smith本人了。

 于是,改为<generator class="assigned" />,再改了下Blog.cs构造函数就OK了。

 还有一件蛮神奇的事情,我在~\Microsoft Visual Studio 9.0\Xml\Schemas下添了nhibernate-configuration.xsd和nhibernate-mapping.xsd文件,所以在项目中进行NHibernate配置会有智能提示。如图:



但奇怪的是,我在另一项目进行配置时,却没有此类提示。如图:

====================

无语了,这是我在几天前遇到的“奇异事件”,但是今天又一切正常了...

====================

最近项目的事情还蛮多的,得抓紧时间干啦~

298°/2989 人阅读/0 条评论 发表评论

登录 后发表评论