«При синтаксическом анализе запроса произошла ошибка» - PullRequest
0 голосов
/ 12 сентября 2011

Я начал изучать NHibernate.У меня установлена ​​последняя версия, и я пытаюсь запустить очень простое приложение.Есть класс User:

public class User
{
    public virtual Guid Id { get; set; }
    public virtual String Name { get; set; }
    public virtual int Age { get; set; }

    public override string ToString()
    {
        return string.Format("User{name='{0}', age={1}}", Name, Age);
    }
}

Его отображение:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="cs_nhibernate_test1"
                   namespace="cs_nhibernate_test1">

  <class name="User">
    <id name="Id">
      <generator class="guid" />
    </id>
    <property name="Name" />
    <property name="Age" />
  </class>
</hibernate-mapping>

Тогда моя тестовая программа выглядит так:

class Program
{
    static void Main(string[] args)
    {
        var cfg = new Configuration();
        cfg.Configure();
        cfg.AddAssembly(typeof (User).Assembly);
        new SchemaExport(cfg).Execute(false, true, true);

        ISessionFactory sessionFactory = cfg.BuildSessionFactory();
        using (ISession session = sessionFactory.OpenSession())
        {
            using (ITransaction transaction = session.BeginTransaction())
            {
                User user = new User { Name = "John Smith", Age = 25 };
                session.Save(user);
                transaction.Commit();
            }
        }
    }
}

И в спящем режиме.Файл cfg.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.MsSqlCeDialect</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlServerCeDriver</property>
    <property name="connection.connection_string">Data Source=FirstSample.sdf</property>
    <property name="show_sql">true</property>
  </session-factory>

Проект является проектом .NET 4.0, все необходимые файлы кажутся находящимися в выходной папке.

Я получаю ошибку:

NHibernate: ВСТАВИТЬ INTO Пользователь (имя, возраст, идентификатор) ЗНАЧЕНИЯ (@ p0, @ p1, @ p2); @ p0 = 'Джон Смит' [Тип: String (0)], @ p1 = 25 [Тип: Int32 (0)], @ p2 = 4b0d4bbf- 7d3c-4bff-908d-ecddfdd8a5cd [Тип: Guid (0)]

Необработанное исключение:System.Data.SqlServerCe.SqlCeException: при синтаксическом анализе запроса произошла ошибка.[Номер строки токена = 1, смещение строки токена = 13, Ошибка токена n = Пользователь]

Есть идеи по ее исправлению?

1 Ответ

2 голосов
/ 12 сентября 2011

Не является ли user зарезервированным ключевым словом? http://msdn.microsoft.com/en-us/library/aa238507(v=sql.80).aspx

...