SqlCeException NHibernate

时间:2011-06-14 22:48:20

标签: hibernate nhibernate

我正在使用Sql Compact Edition。

我有这张桌子:

表“Set”:[PK:IdSet(int),IdProject(int),IdSetState(int),IdPriority(int),NumSet(int),Unit(nchar),NumDisc(int)]

使用NUnit测试。

这是我的测试方法:

[Test]
        public void Can_add_Set()
        {
            var set = new Set { IdProject = 2, IdSetState = 2, NumDisc = 1, IdPriority = 3, NumSet = 100};
            setRepository.AddSet(set);
        }

这是我插入Set的方法:

public void AddSet(Set set) 
        {
            using (ISession session = NHibernateSessionBuilder.OpenSession())
            using (ITransaction transaction = session.BeginTransaction())
            {
                session.Save(set);
                transaction.Commit();
            }
        }

这是映射:

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

  <class name="Set">
    <id name="IdSet">
      <generator class="identity"/>
    </id>
    <property name="IdProject" />
    <property name="IdSetState" />
    <property name="IdPriority" />
    <property name="Unit" />
    <property name="NumDisc" />
    <property name="NumSet" />
  </class>

</hibernate-mapping> 

session.save(set);发生此错误:

用户代码无法控制SqlCeException

无法解析查询。 [令牌行号= 1,令牌行偏移= 13,令牌错误=设置]

这可能是什么???

1 个答案:

答案 0 :(得分:0)

你没有指定表,所以nhibernate将Set作为表名。 Set是大多数数据库中的保留字。你可以尝试逃避它

<class name="Set" table="`Set`">

我不确定我是否使用了正确的反引号