1

Fluent NHibernate を使用した 1 対多の関係に問題があります。次の質問を読みましたが、私の状況はそれよりも単純だと思うので、IUserCollectionType の実装を避けることができるかもしれません。

プロジェクトがあり、プロジェクトには ProductBacklog があります。ProductBacklog は UserStory のリストです。

public class Project
{
    public virtual int Id { get; set; }

    public virtual ProductBacklog Backlog { get; protected set; }
}

public class ProductBacklog : List<UserStory>
{
}

マップしようとすると:

public class ProjectMapping : ClassMap<Project>
{
    public ProjectMapping()
    {
        Id(x => x.Id).GeneratedBy.Identity();
        HasMany(x => x.Backlog).KeyColumn("ProjectId");
    }
}

次のエラーが表示されます。

NHibernate.MappingException: カスタム タイプは UserCollectionType を実装していません: ScrumBoard.Domain.ProductBacklog

Project.Backlog が ProductBacklog タイプではなくリストの場合、次のように動作します。

public class Project
{
    public virtual int Id { get; set; }

    public virtual List<UserStory> Backlog { get; protected set; }
}

IUserCollectionType を実装せずにマッピングを行う方法を Fluent NHibernate に伝える方法はありますか?

前もって感謝します!

4

1 に答える 1

-4

レコードのコレクションと単一のレコードの違いを混乱させていると思います。

This is creating a reference to a single record of type ProductBacklog.
public virtual ProductBacklog Backlog { get; protected set; } 

Where this is creating a collection of records.
public virtual List<UserStory> Backlog { get; protected set; }

あなたがしようとしていることをするために、以下を試してください:

public class Project
{
    public virtual int Id { get; set; }

    public virtual List<ProductBacklog> Backlog { get; set; }
}

public class ProductBacklog : UserStory
{
}

ただし、最善の行動方針は、すでに発見した次のことかもしれません。

public virtual List<UserStory> Backlog { get; set; }

うまくいけば、これがお役に立てば幸いです。

于 2012-12-31T14:53:53.177 に答える