デフォルトでは、FNH の動作は列挙型をデータベース内の文字列にマップすることです。
ただし、複合キーの一部として列挙型をマッピングすると、プロパティは int としてマッピングされます。
たとえば
、この場合
public class Address : Entity
{
public Address() { }
public virtual AddressType Type { get; set; }
public virtual User User { get; set; }
AddressType の場所
public enum AddressType
{
PRESENT, COMPANY, PERMANENT
}
FNH マッピングは次のとおりです。
mapping.CompositeId().KeyReference(x => x.User, "user_id").KeyProperty(x => x.Type);
このマッピングのスキーマ作成により、
create table address (
Type INTEGER not null,
user_id VARCHAR(25) not null,
そしてhbmは
<composite-id mapped="true" unsaved-value="undefined">
<key-property name="Type" type="Company.Core.AddressType, Company.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<column name="Type" />
</key-property>
<key-many-to-one name="User" class="Company.Core.CompanyUser, Company.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<column name="user_id" />
</key-many-to-one>
</composite-id>
AddressType が生成される場所
type="FluentNHibernate.Mapping.GenericEnumMapper`1[[Company.Core.AddressType,
デフォルトの文字列列挙型汎用マッパーとして FNH に mappit を指示するにはどうすればよいですか?