hol*_*gac 10 .net nhibernate fluent
我有一个类,里面有一个字符串和一个枚举器列表.
public enum SomeEnum
{
Undefined=0,
Enum1,
Enum2,
Enum3,
End
}
public class SomeObject
{
public virtual int ID{get; set;}
public virtual String Name {get; set;}
public virtual IList<SomeEnum> EnumList {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
现在,应该有一个SomeObjects列表,包含ID和Name.应该有另一张这样的地图:
5 2
5 3
3 1
9 3
Run Code Online (Sandbox Code Playgroud)
意思是,ID为5的玩家有Enum2和Enum3,另一个ID为3的玩家有Enum1,而ID为9的玩家有Enum3.他们说可以映射int,float等,但我不想在列表中创建IList.
有一种简单的方法可以让流利的nhibernate这样做吗?
HasMany(x => x.EnumList )
.Cascade.All()
.Table("ObjectEnumTable");
Run Code Online (Sandbox Code Playgroud)
此映射文件抛出异常并说"关联引用未映射的类:SomeEnum".
提前致谢.
Sta*_*t99 13
你最好将你的枚举值列表存储为直接的Flags枚举值,但如果你绝对必须有一个枚举列表(你需要支持重复或遗留数据库),那么你的映射应该是这样的:
HasMany(x => x.EnumList )
.Cascade.All()
.Table("ObjectEnumTable")
.Element("EnumValueColumn");
Run Code Online (Sandbox Code Playgroud)
关键是.Element()方法,您必须拥有任何非实体HasMany关系,包括字符串,整数等.这将为您提供引用您的父实体的ID列,以及一个EnumValueColumn列,其中包含每个实体的枚举值项目.
| 归档时间: |
|
| 查看次数: |
3028 次 |
| 最近记录: |