代码之家  ›  专栏  ›  技术社区  ›  Jacob Nelson

将guid与SQL Server和nhibernate一起使用

  •  0
  • Jacob Nelson  · 技术社区  · 14 年前

    我正在运行NHibernate和SQL Server CE,我正在尝试使用guid作为我的ID列。这是我已经拥有的代码:

    映射:

      <class name="DatabaseType" table="DBMON_DATABASE_TYPE">
        <id name="Id" column="DATABASE_TYPE_ID">
          <generator class="guid" />
        </id>
        <property name="DispName" />
      </class>
    

    这是它创建的create语句:

    create table DBMON_DATABASE_TYPE (
        DATABASE_TYPE_ID BIGINT not null,
       DispName NVARCHAR(255) null,
       primary key (DATABASE_TYPE_ID)
    )
    

    这是我希望能够在上面运行的insert语句:

    Insert into DBMON_DATABASE_TYPE (DATABASE_TYPE_ID,DISPNAME) values ('f5c7181e-e117-4a98-bc06-733638a3a264','DOC')
    

    这就是我在尝试时得到的错误:

    Major Error 0x80040E14, Minor Error 26306
    > Insert into DBMON_DATABASE_TYPE (DATABASE_TYPE_ID,DISPNAME) values ('f5c7181e-e117-4a98-bc06-733638a3a264','DOC')
    Data conversion failed. [ OLE DB status value (if known) = 2 ]
    

    再一次,我的目标是能够使用guid作为表的id列,它们甚至不需要自动生成,我可以在nhibernate的save/saveorupdate方法中手动生成它们。如果您还有其他需要了解的信息,请告诉我!

    3 回复  |  直到 14 年前
        1
  •  1
  •   Michael Gattuso    14 年前

    <id name="Id" column="DATABASE_TYPE_ID" type="Guid">
      <generator class="guid" />
    </id>
    
        2
  •  1
  •   SQLMenace    14 年前

    DATABASE_TYPE_ID BIGINT not null,
    

    DATABASE_TYPE_ID UNIQUEIDENTIFIER not null,
    

    NEWSEQUENTIALID() http://msdn.microsoft.com/en-us/library/ms189786.aspx

        3
  •  1
  •   Christoffer Lette    14 年前