NHibernate没有丢弃外键约束

时间:2010-05-27 17:31:52

标签: sql nhibernate sql-server-2000

我是NHibernate的新手,所以这可能是我的错误,但是当我使用时:

schema.Create(true, true);

我明白了:

SchemaExport [(null)]- There is already an object named 'XXX' in the database.
System.Data.SqlClient.SqlException: There is already an object 
named 'XXX' in the database.

我抓住了nHibernate正在使用的SQL代码,直接从MSSMS运行它,并收到了类似的错误。调查一下,生成的代码没有正确地删除外键约束。下降看起来像这样:

if exists (select 1 from sysobjects where id = OBJECT_ID(N'dbo[FK22212EAFBFE4C58]')
AND parent_obj = OBJECT_ID('YYY'))
alter table dbo.YYY  drop constraint FK22212EAFBFE4C58

做一个“选择OBJECT_ID(N'dbo [FK22212EAFBFE4C58]')”我得到了空。如果我取出“dbo”(即“选择OBJECT_ID(N'[FK22212EAFBFE4C58]')”),则返回ID。

所以,我的问题是,为什么nHibernate添加dbo,为什么这会阻止返回对象(因为拥有约束的表是dbo.XXX)

我的一个映射文件:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping namespace="CanineApp.Model" assembly="CanineApp.Model" xmlns="urn:nhibernate-mapping-2.2">
  <class name="MedicalLog" table="MedicalLog" schema="dbo">
    <id name="MedicalLogID" type="Int64">
      <generator class="identity" />
    </id>
    <property name="InvoiceAmount" type="Decimal" not-null="true" />
    ...
    <many-to-one name="Canine" class="Canine" column="CanineID" not-null="true" fetch="join" />
    <many-to-one name="TreatmentCategory" class="TreatmentCategory" column="TreatmentCategoryID" not-null="true" access="field.camelcase-underscore" />
  </class>
</hibernate-mapping>

1 个答案:

答案 0 :(得分:0)

答案:。 这可能是一个错误。这个确切的issue for SQL Server 2005有一个条目。它似乎没有被标记为SQL 2000,因此我将创建一个错误报告或修复它。

相关问题