Я пытаюсь сгенерировать свою базу данных из классов, используя NHibernate, но создаваемая схема содержит столбец для класса.По большей части это не имеет значения, но один конкретный класс вызывает сбой ... мой класс Order (потому что order - это зарезервированное ключевое слово в SQL - да, возможно, мне следовало использовать слово, которое не было ключевым словом, ноэто еще одна проблема)
Следующий файл сопоставления:
<?xml version="1.0" encoding="utf-8" ?>
<class name="Order" table="Orders">
<id name="_persistenceID" column="ID" type="Guid" access="field" unsaved-value="00000000-0000-0000-0000-000000000000">
<generator class="guid.comb" />
</id>
<version name="_persistenceVersion" column="Version" access="field" type="int" unsaved-value="0" />
<property name="DateDeleted" column="DateDeleted" type="DateTime" />
<property name="ChangeReason" column="ChangeReason" type="String" not-null="true" />
<property name="CompletedDate" column="CompletedDate" type="DateTime" />
<property name="IsDeleted" column="IsDeleted" type="Boolean" />
<property name="Notes" column="Notes" type="String" />
<property name="OrderDate" column="OrderDate" type="DateTime" not-null="true" />
<property name="OrderTotal" column="OrderTotal" type="Decimal" />
<property name="RequiredDate" column="RequiredDate" type="DateTime" />
<many-to-one name="Customer" column="Customer" class="Customer" not-null="true" />
<bag name="OrderDetails" table="OrderDetails" generic="true" cascade="all">
<key column="OrderDetail" foreign-key="FK_OrderOrderDetails" />
<one-to-many class="OrderDetail" />
</bag>
</class>
создает следующий SQL:
create table Orders (
ID UNIQUEIDENTIFIER not null,
Version INT not null,
DateDeleted DATETIME null,
ChangeReason NVARCHAR(255) not null,
CompletedDate DATETIME null,
IsDeleted BIT null,
Notes NVARCHAR(255) null,
OrderDate DATETIME not null,
OrderTotal DECIMAL(19,5) null,
RequiredDate DATETIME null,
Customer UNIQUEIDENTIFIER not null,
Order UNIQUEIDENTIFIER null,
primary key (ID)
)
Именно этот столбец со второго по последний (ордер) делает его недействительным и высвечивает проблему.Это происходит на всех других моих уроках - но я не знаю почему.Что я могу с этим поделать?
Редактировать: 30/11/2010 - Другой конец файла сопоставления:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="TheWorkshop.DomainModel" namespace="TheWorkshop.DomainModel" default-access="field.camelcase-underscore" default-lazy="true">
<class name="OrderDetail" table="OrderDetails">
<id name="_persistenceID" column="ID" type="Guid" access="field" unsaved-value="00000000-0000-0000-0000-000000000000">
<generator class="guid.comb" />
</id>
<version name="_persistenceVersion" column="Version" access="field" type="int" unsaved-value="0" />
<property name="AdjustedPrice" column="AdjustedPrice" type="Decimal" not-null="true" />
<property name="LineCost" column="LineCost" type="Decimal" not-null="true" />
<property name="Notes" column="Notes" type="String" />
<property name="Photo" column="Photo" type="String" />
<property name="Price" column="Price" type="Decimal" not-null="true" />
<property name="Quantity" column="Quantity" type="int" />
<many-to-one name="`Order`" column="`Order`" class="Order" not-null="true" />
<many-to-one name="Product" column="Product" class="Product" not-null="true" />
</class>
, который генерирует следующее:
create table OrderDetails (
ID UNIQUEIDENTIFIER not null,
Version INT not null,
AdjustedPrice DECIMAL(19,5) not null,
LineCost DECIMAL(19,5) not null,
Notes NVARCHAR(255) null,
Photo NVARCHAR(255) null,
Price DECIMAL(19,5) not null,
Quantity INT null,
[Order] UNIQUEIDENTIFIER not null,
Product UNIQUEIDENTIFIER not null,
primary key (ID)
)