gpt4 book ai didi

nhibernate - Fluent NHibernate 映射枚举作为查找表

转载 作者:行者123 更新时间:2023-12-03 00:00:46 25 4
gpt4 key购买 nike

我有以下内容(简化)

public enum Level
{
Bronze,
Silver,
Gold
}

public class Member
{
public virtual Level MembershipLevel { get; set; }
}

public class MemberMap : ClassMap<Member>
{
Map(x => x.MembershipLevel);
}

这将创建一个表,其中包含名为 MembershipLevel 的列,其值为 Enum 字符串值。

我想要的是将整个枚举创建为查找表,成员表使用整数值作为 FK 来引用它。

此外,我想在不改变模型的情况下完成此操作。

最佳答案

要将枚举属性映射为 int 列,请使用方法 CustomType

public class MemberMap : ClassMap<Member>
{
Map( x => x.MembershipLevel ).CustomType<int>();
}

为了保持枚举和查找表同步,我会将查找表和数据添加到您的 SQL 脚本中。集成测试可以验证枚举和查找表值是否相同。

如果您希望 SchemaExport 创建此表,请为其添加类和映射。

public class MembershipLevel
{
public virtual int Id { get; set; }
public virtual string Code { get; set; }
}

public class MembershipLevelMap : ClassMap<MembershipLevel>
{
Id( x => x.Id );
Map( x => x.Code );
}

如果您使用 SchemaExport 创建表,则还需要填充它:

foreach (Level l in Enum.GetValues( typeof( Level ))) {
session.Save( new MembershipLevel{ Id = (int) l, Code = l.ToString() });
}

关于nhibernate - Fluent NHibernate 映射枚举作为查找表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2568894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com