2010-06-29 2 views
0

단위 테스트 및 문제가있는 sql-server compact edition에서 nhibernate를 사용하려고합니다.SQL Server CE에서 NHibernate YesNo DbType에서 매핑이 없습니다. AnsiStringFixedLength

<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에 꽤 새로운 해요 : 순간에 나는 그냥 하나의 엔티티가 있습니다. 나는 세션 구축하기 위해 다음 코드를 사용하고 있습니다 :

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) 
:

 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-서버 CE 세션을 사용할 때

이것은 머리 멜터입니다 - 나는 SQL 서버에 대한 테스트를하고 싶지 않고 db를 변경할 수 없습니다. 그것은 'Y'또는 'N'char (1) db 필드에서 객체의 부울로 매핑하는 해당 YesNo 유형의 처리와 관련이 있습니다.

내가 말했듯이 SQL 서버에서 문제없이 작동합니다.

+0

SQL CE 데이터베이스에서 매핑을 검토하여 생성되는 것을 확인 했습니까? Fluent NH가 실제 맵핑 파일을 작성하여 매핑이 어떻게 보이는지 확인할 수 있습니까? –

답변

1

SQL Server CE는 DbType.AnsiStringFixedLength를 지원하지 않습니다 (here 참조). 불행하게도 YesNo는이 DbType에서 파생됩니다.

예 아니요를 쓸 수도 있습니다. custom type 또는 형식 Char (두 버전의 SQL Server에서 지원되는 DbType.StringFixedLength에 매핑 됨)를 사용할 수 있습니다. 어느 옵션도 특히 매력적이지 않습니다. 나는 이것이 선택 사항이 아니라고 말한 것을 알고 있지만 SQL Server를 목표로 삼고 있다면 CE 테스트 전략을 재평가 해 볼 가치가 있습니다. SQL Server Express가 아닌 이유는 무엇입니까?

+0

감사합니다. 줄리안 - 지금은 로컬 SQL Server 인스턴스에서 테스트를하고 있습니다. 다시 볼 시간이 생길 때까지만합니다. 나는 커스텀 타입을 쓰려고했지만, 단지 저를 위해 일하지 않았습니다. –

관련 문제