在Fluent NHibernate中,如何映射组件列表?

时间:2010-11-11 18:16:53

标签: nhibernate fluent-nhibernate nhibernate-mapping

如何在Nhibernate中流畅地映射组件列表?

  public class Registration : Entity
{
        public virtual IList<InsuranceInformation> InsuranceInformation { get; set; }
     }

public class InsuranceInformation
{
    public virtual Person Insured { get; set; }
    public virtual string PolicyNumber { get; set; }
    public virtual string InsuranceCompanyId { get; set; }
    public virtual string InsuranceCompanyName { get; set; }
    public virtual string PlanType { get; set; }
    public virtual string GroupNumber { get; set; }
    public virtual FamilyRelationships InsuredRelationshipToPatient { get; set; }
 }

此处注册是实体,而InsuranceInformation / Person是组件。

如果我将InsuranceInformation改为实体,我可以使用FluentNH Automapper轻松映射。但是当我将InsuranceInformation更改为Component时,它会抛出一个映射异常。

2 个答案:

答案 0 :(得分:5)

Fluent NHibernate IDictionary with composite element mapping显示了映射组件字典的示例:

HasMany<CategoryResource>(x => x._resources)
.AsMap<string>("LangCode")
.KeyColumn("EntityID")
.Table("CategoryResources")
.Component(x =>
    {
        x.Map(c => c.Name);
        x.Map(c => c.Description);
    })
.Cascade.All();

希望这会指出你正确的方向。

答案 1 :(得分:3)

如果您使用的是Automapper,则需要通过修改InsuranceInformation告诉IAutomappingConfiguration是一个组件。覆盖IsComponent方法并返回true类型的InsuranceInformation