NHibernate标识本机sql与MySql中的条件

时间:2012-01-11 13:15:45

标签: mysql nhibernate

我有一个MySql表的pk设置如下:

`id` int(10) unsigned NOT NULL auto_increment

我的ID的User.hbm.xml文件如下所示:

<id name="Id" type="int" column="id" unsaved-value="null">
    <generator class="identity" />
</id>

我的User类的id属性如下所示,使用C#:

public virtual int Id { get; private set; }

以下是发生的事情:

  1. 如果我使用以下功能:

    var user = Session.Get< User >(1);
    
  2. 但是,如果我将其更改为Native SQL,则会显示错误:“System.UInt32类型无法分配给Data.ccess32的类型为SystemAccess.Domain.User.Id的System.Int32 setter属性。” / p>

    var user = Session
                  .CreateSQLQuery(@"SELECT id AS Id, login_name AS LoginName, first_name AS FirstName, last_name AS LastName FROM user WHERE id = :id")
                  .SetResultTransformer(Transformers
                            .AliasToBean<User>())
                  .SetInt32("id", 1)
                  .UniqueResult<User>();
    
  3. 我很困惑,有什么建议吗?这对UInt32有意义,因为MySql表说unsigned。所以我在我的类和映射文件中将其更改为uint。然后,Native SQL按预期工作,但Session.Get<User>(1)失败并显示错误:

    Provided id of the wrong type. Expected: System.UInt32, got System.Int32".
    

    由于

0 个答案:

没有答案