NHibernateマッピングでYesNoブール型の逆の動作を取得する最適な方法は何ですか?NHibernate DataTypes - NoYesブール
「Y」は偽を意味し、「N」は真実を意味します。
NoYesタイプはありますか?あなたはカスタムタイプを書いていますか?本当に簡単なこと?
ブール値を逆にする必要があるこの問題は、40を超えるテーブルの少なくとも1つのフィールドに存在します。 レガシーデータベースに対応しようとしています。
NHibernateマッピングでYesNoブール型の逆の動作を取得する最適な方法は何ですか?NHibernate DataTypes - NoYesブール
「Y」は偽を意味し、「N」は真実を意味します。
NoYesタイプはありますか?あなたはカスタムタイプを書いていますか?本当に簡単なこと?
ブール値を逆にする必要があるこの問題は、40を超えるテーブルの少なくとも1つのフィールドに存在します。 レガシーデータベースに対応しようとしています。
私は、カスタムタイプを実装することで、レガシーデータベースの奇妙なデータフォーマットを簡単に処理できることを発見しました。たとえば、私は最近DateTime
を、yyyyMMdd
という形式の8桁の数字にマップするシンプルなユーザー・タイプを作成しました。これは、使用しなければならなかった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" />
「はい」、これは地獄からのレガシーデータベースでなければなりません「no」を意味します。 –
ほんの奇妙な慣例(約7)。そして、これもその一つです。地獄ではないが、腐敗しているかもしれない。 – BuddyJoe