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