1

私の問題は、親クラスがあり、親ごとに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 -age -owner -imagesワーカー:-id -age -name -images

画像については、何が必要かわかりませんが、次のようなものがあります。-id -filename(マッピングで必要な場合はオプション)-type -item

それをどのようにマッピングするかについてのアイデアはありますか?

4

1 に答える 1

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
}
于 2012-01-10T10:05:06.067 に答える