我遇到使用Fluent NHibernate的One To Many关系问题。我已经阅读了以下question但我认为我的情况比这简单,所以也许我可以避免实现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是List而不是ProductBacklog类型,它将起作用:
public class Project
{
public virtual int Id { get; set; }
public virtual List<UserStory> Backlog { get; protected set; }
}
有没有办法告诉Fluent NHibernate如何在不实现IUserCollectionType的情况下进行映射?
提前致谢!
答案 0 :(得分:-2)
我认为你混淆了记录集和单个记录之间的区别。
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; }
希望这有帮助。