Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql NHibernate不删除外键约束_Sql_Nhibernate_Sql Server 2000 - Fatal编程技术网

Sql NHibernate不删除外键约束

Sql NHibernate不删除外键约束,sql,nhibernate,sql-server-2000,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. 我抓取了nHiber

我是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代码,直接从MSMS运行,并收到了类似的错误。仔细观察,生成的代码没有正确地删除外键约束。水滴看起来像这样:

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
执行select对象_IDN'dbo[fk22212eaffbfe4c58]“我得到null。如果我取出dbo,即选择OBJECT_IDN“[fk22212eaffbfe4c58]”,则返回该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>
答复:。
可能是个虫子。有一个条目是关于这一点的。它似乎没有被标记为SQL 2000,因此我将创建一个bug报告或修复它。

您可以提供任何映射吗?查看映射文件中的一个简单示例,我注意到我已将模式指定为dbo。一般来说,我在处理数据库时总是指定dbo。在nHibernate这不是个好主意吗?无论哪种方式,无论我指定哪个模式,它都应该删除约束,不是吗?指定模式是正确的,可能是生成的sql中存在错误。。。如果在“dbo”和“[FK…”之间加一个点,或者在drop语句中,如果在对象id之前添加“dbo.”部分,则select返回所需的结果?在这两者之间加一个点即可。