首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NHibernate YesNo on SQL-Server CE不存在来自DbType AnsiStringFixedLength的映射

NHibernate YesNo on SQL-Server CE不存在来自DbType AnsiStringFixedLength的映射
EN

Stack Overflow用户
提问于 2010-06-30 06:24:46
回答 1查看 1.1K关注 0票数 0

尝试在sql-server压缩版上使用nhibernate进行单元测试,但遇到了一些问题。目前我只有一个实体:

代码语言:javascript
运行
复制
 <class name="Audit" table="eolaudit_llk">
<id name="ID" column="eolauditlk_ky">
  <generator class="identity"></generator>
</id>
<property name="Name" column="eolauditlk_nm" />
<property name="Description" column="eolauditlk_dn" />
<property name="Active" column="active_fg" type="YesNo" />
<property name="UpdateUser" column="update_user_id" />
<property name="UpdateDateTime" column="update_dm"/>

我对nhibernate还很陌生。我使用以下代码来构建会话:

代码语言:javascript
运行
复制
        public static ISessionFactory CrashAndBurnCompactSQLSessionFactory(string ConnectionString)
    {
        return Fluently.Configure()
            .Database(MsSqlCeConfiguration.Standard
                .ConnectionString(ConnectionString)
                .ShowSql()
                .UseOuterJoin()
                .QuerySubstitutions("true 1, false 0, yes 'Y', no 'N'")
                .Dialect("NHibernate.Dialect.MsSqlCeDialect")
                )
            .Mappings(m =>
            {
                m.HbmMappings
                  .AddFromAssemblyOf<Audit>();
            })
            .ExposeConfiguration(BuildSchema)
            .BuildSessionFactory();
    }

它在SQL-Server上工作得很好,但是当我从上面使用SQL-Server CE会话时,我得到了以下错误:

代码语言:javascript
运行
复制
    failed: System.ArgumentException: No mapping exists from DbType AnsiStringFixedLength to a known SqlDbType. at System.Data.SqlServerCe.SqlCeType.FromDbType(DbType type)
 at System.Data.SqlServerCe.SqlCeParameter.set_DbType(DbType value)

这是一个让人头疼的问题--我不想在sql-server上进行测试,也不能更改db。这与处理从'Y‘或’n‘char(1) db字段映射到对象中的布尔值的YesNo类型有关。

正如我所说的,它在SQL-Server中工作得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-11 01:00:43

SQL Server CE不支持DbType.AnsiStringFixedLength (请参阅here。不幸的是,YesNo是从这个DbType派生出来的。

您可以编写自己的YesNo custom type,或者使用类型Char (它映射到两个版本的SQL Server都支持的DbType.StringFixedLength )。这两种选择都不是特别有吸引力。我知道你说这不是一个选择,but...if你的目标是SQL Server,这可能值得重新评估你在CE上的测试策略。例如,为什么不使用SQL Server Express?

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

https://stackoverflow.com/questions/3145222

复制
相关文章

相似问题

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