我正在尝试使用Fluent NHibernate映射枚举值的集合。
IList<EnumType> lst;
我找不到任何关于它的文档,但我确信它应该是可能的。 映射一组实体时,我完全没有问题。
谢谢, 莱昂纳多
答案 0 :(得分:4)
您可以使用以下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)个表。
答案 1 :(得分:1)
HasMany(x =&gt; x.Items) 。表( “TBL”) .KeyColumn( “FK”) .Element( “ECOL”) .AsBag()