代码之家  ›  专栏  ›  技术社区  ›  Mark D

SQL Server CE上的NHibernate YesNo不存在来自DbType AnistringFixedLength的映射

  •  0
  • Mark D  · 技术社区  · 16 年前

    尝试在SQLServerCompactEdition上使用nhibernate进行单元测试时遇到了一些问题。目前我只有一个实体:

     <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"/>
    

    我是新来的。我使用以下代码构建会话:

            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();
        }
    

        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上进行测试,也不能更改数据库。处理从“Y”或“N”char(1)db字段映射到对象中的布尔值的YesNo类型肯定是相关的。

    正如我所说的,在SQLServer中,这件事可以很好地工作。

    1 回复  |  直到 16 年前
        1
  •  1
  •   JulianM    16 年前

    SQL Server CE不支持DbType.AnsiStringFixedLength(请参阅 here

    custom type