我是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运行它,并收到类似的错误。调查一下,生成的代码没有正确删除外键约束。drop如下所示:
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 OBJECT_ID(N'dboFK22212EAFBFE4C58')“得到null。如果我取出"dbo“(即"select 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>发布于 2010-05-31 23:19:30
答案:。可能是个窃听器。有一个与此issue for SQL Server 2005完全相同的条目。它似乎还没有被标记为SQL2000,所以我将创建一个错误报告或修复它。
https://stackoverflow.com/questions/2923395
复制相似问题