Что не так с этим файлом сопоставления NHibernate? - PullRequest
0 голосов
/ 02 февраля 2010

Я получаю ошибку загрузки объекта из-за {"Неверный синтаксис рядом с ключевым словом" Файл "."}

Вот мой файл отображенияЯ предполагаю, что я не избегаю чего-то должным образом, но я не вижу что.Я не думаю, что это мое PreApplication.File имя таблицы.Спасибо заранее !!

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Model" namespace="Model.PreApplication">
  <class name="File" table="PreApplication.File">

    <id name="ID" column="ID" type="Int32" unsaved-value="0">
      <generator class="native" />
    </id>

    <property name="DateUploaded" column="DateUploaded" type="DateTime" not-null="true" />
    <property name="FileName" column="`FileName`" type="String" not-null="true" />
    <property name="OriginalFileName" column="OriginalFileName" type="String" not-null="true" />
    <property name="ContentType" column="ContentType" type="String" not-null="true" />

  </class>
</hibernate-mapping>

Редактировать: Используя предоставленные предложения, я обнаружил, что их проблема вызвана тем, что моя таблица называется File.Если я изменю атрибут таблицы на «PreApplication. [File]», он будет работать правильно, но я не думаю, что это способ «NHibernate».Я думаю, что должен использовать тик (`), но я не могу заставить это работать.

Ответы [ 3 ]

3 голосов
/ 02 февраля 2010

Я нашел правильный способ исправить это. Я нашел атрибут схемы и изменил его следующим образом:

<class name="File" schema="PreApplication" table="`File`">

Это правильно экранирует имя таблицы файлов без необходимости жесткого кода []. Спасибо всем за помощь!

2 голосов
/ 02 февраля 2010

Можно ли использовать профилировщик, который перехватывает операторы SQL, отправляемые в БД, или установить для свойства конфигурации show_sql NHibernate значение true, чтобы мы могли видеть фактический оператор SQL, который выполняется?

0 голосов
/ 04 февраля 2010

«Файл» является зарезервированным ключевым словом в T-SQL (см. http://msdn.microsoft.com/en-us/library/ms189822.aspx).. Не следует использовать его в качестве имени таблицы. Это можно проверить в инструменте запросов для SQL Server:

select * from File

... и вы получите ту же ошибку:

Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'File'.

Вы должны изменить имя своей таблицы или использовать синтаксис [File], если вы не можете изменить имя.

...