我的问题是我有父类,并且对于每个父母我都有classB列表。 例如,表格是:
图片
id
type
item
filename
计算机
id
owner
age
工
id
name
age
我们为每台计算机和工作人员提供了许多图像。在计算机和工人的类中,我们有图像列表。对于计算机,图像项目是:
id=auto generate
type=1
item= id of computer
为工作人员提供图像项目:
id=auto generate
type=2
item=id of worker
课程应该是: 电脑: -ID -年龄 -所有者 -图片 工作人员: -ID -年龄 -名称 -images
关于图像,我不确定我需要什么,但是类似的东西: -ID -文件名 (可选,如果映射需要) -类型 -Item
有些想法如何映射?
答案 0 :(得分:1)
class ComputerMap : ClassMap<Computer>
{
public ComputerMap()
{
HasMany(x => x.Images)
.Where("type = 1")
.KeyColumn("item")
.Inverse()
.Cascade.All();
}
}
class WorkerMap : ClassMap<Worker>
{
public WorkerMap()
{
HasMany(x => x.Images)
.Where("type = 2")
.KeyColumn("item")
.Inverse()
.Cascade.All();
}
}
class ImageMap : ClassMap<Image>
{
public WorkerMap()
{
ReferencesAny(x => x.Item)
.EntityIdentifierColumn("item")
.EntityTypeColumn("type")
.AddMetaValue<Computer>(1)
.AddMetaValue<Worker>(2)
.IdentityType<int>(); <-- maybe optional
}
}
// in Computer and Worker have this
public void AddImage(Image image)
{
this.Images.Add(image);
image.Item = this
}