NHibernate マッピングで YesNo ブール型の逆の動作を取得する最良の方法は何ですか?
「Y」は偽を意味し、「N」は真を意味します。
NoYesタイプはありますか?カスタムタイプを書きますか?本当に簡単なこと?
ブール値を逆にする必要があるというこの問題は、40 以上のテーブルの少なくとも 1 つのフィールドに存在します。レガシーデータベースに適応しようとしています。
NHibernate マッピングで YesNo ブール型の逆の動作を取得する最良の方法は何ですか?
「Y」は偽を意味し、「N」は真を意味します。
NoYesタイプはありますか?カスタムタイプを書きますか?本当に簡単なこと?
ブール値を逆にする必要があるというこの問題は、40 以上のテーブルの少なくとも 1 つのフィールドに存在します。レガシーデータベースに適応しようとしています。
カスタムタイプを実装することで、レガシーデータベースの奇妙なデータ形式を簡単に処理できることがわかりました。たとえば、私は最近DateTime
、フォーム上の 8 桁の数字にマップする単純なユーザー タイプを作成しましyyyyMMdd
た。これは、DB2 ダンプに日付を保存する方法でした。
Los Techies には、IUserType
問題を解決するために使用できる実装の例があります: Mapping Strings to Booleans Using NHibernate's IUserType。
同様の問題がありました。私が見つけたより簡単な解決策は、NHibernate から CharBooelanType を拡張し、マッピングで新しい型を使用することでした。次のようになります。
using NHibernate.Type;
using NHibernate.SqlTypes;
namespace MyAssembly.MyNamespace
{
public class NewBoolType : CharBooleanType
{
public NewBoolType()
: base(new AnsiStringFixedLengthSqlType(1)) { }
protected override string TrueString
{
get { return "N"; }
}
protected override string FalseString
{
get { return "Y"; }
}
public override string Name
{
get { return "inverted_bool"; }
}
}
}
マッピングは次のようになります。
<property name="MyProperty" column="MyColumn" type="MyAssembly.MyNamespace.NewBoolType, MyAssembly" />