我正在尝试使用NHibernate进行一个相当简单的插入到SqlCe数据库中,但似乎NHibernate生成了错误的表名。它抛出GenericADOException并带有以下细节:
无法插入: [WebLibrary.Models.Category#400a532d-f62e-4faf-978b-a29c00d4de46] [SQL:INSERT INTO WebLibrary.Models_Categories(Title,Slug,DateCreated, LastModified,CreatedBy,LastModifiedBy,ParentId,Id)VALUES(?,?, ?,?,?,?,?,?)]
以下是映射:
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping schema="WebLibrary.Models" assembly="WebLibrary" namespace="WebLibrary.Models" xmlns="urn:nhibernate-mapping-2.2">
<class name="Category" table="Categories">
<id name="Id" type="Guid">
<column name="Id" not-null="true" />
<generator class="guid.comb" />
</id>
...
</class>
</hibernate-mapping>
这是配置:
var cfg = new Configuration();
cfg.DataBaseIntegration(c =>
{
c.Dialect<MsSqlCe40Dialect>();
c.ConnectionString =
"Data Source=|DataDirectory|\\library.sdf;Persist Security Info=False;";
})
.AddAssembly(typeof(NHibernateConfiguration).Assembly);
正如您所看到的,NHibernate使用该类的完全限定名称作为表的名称。
我正在使用NHibernate 3.3.1.4000和SqlCe 4.0。
我错过了什么?
答案 0 :(得分:0)
您的地图包含schema
属性。删除它。
添加模式将在表前添加模式名称..这对于默认模式中的表不是必需的。