我已经使用每个子类的表映射了一个类层次结构,它适用于Sql Server2005。
但是,当我尝试对Sql Compact 4.0db使用相同的映射时,生成的insert语句不起作用,因为它不包含任何列或值。
我使用的是NH3.1.0-GA和MsSqlCe40Dialect。
生成的insert语句为:
INSERT INTO Element values ( )和映射:
<class name="IElement" table ="Element">
<id name="Id">
<generator class="identity"/>
</id>
<joined-subclass name="TextElement" table ="TextElement">
<key column="Id"/>
<property name="Text" length="200"/>
</joined-subclass>
<joined-subclass name="NumberElement" table="NumberElement">
<key column="Id"/>
<property name="Value"/>
</joined-subclass>
</class>谢谢。
发布于 2011-05-23 20:26:15
这绝对是一个bug (更准确地说,是一个还没有得到支持的场景)。我建议你在http://jira.nhforge.org上创建一个完整的重现测试问题(你可以链接到这个问题)
无值插入的MSSQL语法为INSERT INTO <table> DEFAULT VALUES。这是在MsSql2000Dialect.NoColumnsInsertString中定义的。
同样的代码可能应该应用于MsSqlCe40Dialect (或者MsSqlCeDialect,如果在以前的版本中提供了这种语法,我不知道)。
作为一种解决方法,只需继承MsSqlCe40Dialect并添加以下内容:
public override string NoColumnsInsertString
{
get { return "DEFAULT VALUES"; }
}当然,我假设这是SQL CE4的正确语法。
https://stackoverflow.com/questions/6094160
复制相似问题