首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate:连接的子类和Sql Compact 4的insert语句不正确

NHibernate:连接的子类和Sql Compact 4的insert语句不正确
EN

Stack Overflow用户
提问于 2011-05-23 15:31:18
回答 1查看 419关注 0票数 0

我已经使用每个子类的表映射了一个类层次结构,它适用于Sql Server2005。

但是,当我尝试对Sql Compact 4.0db使用相同的映射时,生成的insert语句不起作用,因为它不包含任何列或值。

我使用的是NH3.1.0-GA和MsSqlCe40Dialect。

生成的insert语句为:

代码语言:javascript
复制
INSERT INTO Element values ( )

和映射:

代码语言:javascript
复制
<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>

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-23 20:26:15

这绝对是一个bug (更准确地说,是一个还没有得到支持的场景)。我建议你在http://jira.nhforge.org上创建一个完整的重现测试问题(你可以链接到这个问题)

无值插入的MSSQL语法为INSERT INTO <table> DEFAULT VALUES。这是在MsSql2000Dialect.NoColumnsInsertString中定义的。

同样的代码可能应该应用于MsSqlCe40Dialect (或者MsSqlCeDialect,如果在以前的版本中提供了这种语法,我不知道)。

作为一种解决方法,只需继承MsSqlCe40Dialect并添加以下内容:

代码语言:javascript
复制
public override string NoColumnsInsertString
{
    get { return "DEFAULT VALUES"; }
}

当然,我假设这是SQL CE4的正确语法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6094160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档