1

私はNHibernate 3.3で作業しており、コードによるマッピングシステムを使用しています。使用しているテーブル/データベースは、アプリケーションに対して読み取り専用になります。

私が直面している問題は、主キー列が SQL Server にバイナリ フィールドとして格納されていることです。これを文字列として読み取る必要がありますが、残念ながらテーブルを変更することはできません (インデックス付きビューの追加を含む)。

現時点では、IUsertypeを使用して値をバイナリから文字列に変換しようとしています。ただし、エンティティの Id 列のタイプを IUserType を使用するように設定しようとすると、行き詰まります。

以下の例のように、通常のプロパティに対しては正常に実行できましたが、ID 列と外部キー列に対してはそれを行う方法がわかりません。

public class ExampleEntity
{
    public virtual String MyIdColumn { get; set; }
    public virtual Country Country { get; set; }
}


public class ExampleEntityMap : ClassMapping<ExampleEntity>
{

    public ExampleEntityMap()
    {
        Table("Table");

        Id(i => i.Id, map =>
        {
            map.Column("MyIdColumn");
            map.Type(???);
        });
        Property(i => i.Country, map =>
                                  {
                                      map.Column("Country");
                                      map.Type<CountryEnumUserType>();
                                  });
    }
}
  1. コードによる NH3.3 マッピングでこれは可能ですか?
  2. IUserType が Id フィールドに対して行うことを実現するには、代わりにIIdentifierTypeを実装する必要がありますか?
  3. NHibernate トランスフォーマーは私がやっていることを達成できますか?
  4. これを解決する別の方法はありますか?データを取得して C# で変換する以外に、12 を超えるテーブルの多くの列に対してこれを行う必要があります。

ありがとう

4

2 に答える 2