我正在尝试使用 Fluent NHibernate 映射枚举值的集合。
IList<EnumType> lst;
我找不到任何关于它的文档,但我很确定这应该是可能的。
我对映射实体集合完全没有问题。
谢谢,
莱昂纳多
最佳答案
您可以使用以下 FNH 映射签名来映射简单值类型集合。
HasMany(x => x.Collection)
.Table("TableName")
.KeyColumn("KeyColumnName")
.Element("ValueColumnName");
在哪里:
enum
因为它将被映射为 int)。 让我们看一个如何映射几个值类型集合的示例。
public enum EnumType
{
Value1,
Value2,
Value3
}
public class Entity
{
/// <summary>
/// Primary key
/// </summary>
public virtual int Id { get; set; }
/// <summary>
/// Collection of strings
/// </summary>
public virtual IList<string> StringCollection { get; set; }
/// <summary>
/// Collection of enums
/// </summary>
public virtual IList<EnumType> EnumCollection { get; set; }
/// <summary>
/// Collection of dates/times
/// </summary>
public virtual IList<DateTime> DateTimeCollection { get; set; }
}
public class EntityMap : ClassMap<Entity>
{
public EntityMap()
{
// Map primary key.
Id(x => x.Id);
// Map value collections
HasMany(x => x.StringCollection)
.Table("Entity_String")
.KeyColumn("EntityId")
.Element("String");
HasMany(x => x.EnumCollection)
.Table("Entity_Enum")
.KeyColumn("EntityId")
.Element("Enum");
HasMany(x => x.DateTimeCollection)
.Table("Entity_DateTime")
.KeyColumn("EntityId")
.Element("DateTime");
}
}
此映射的结果将生成四 (4) 个表。
关于fluent-nhibernate - 使用 Fluent NHibernate 映射一个简单的元素集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2073809/