Свободное владение Nhibernate - проблема сопоставления один ко многим - PullRequest
1 голос
/ 17 марта 2011

Я получаю исключение NHibernate.MappingException при попытке выполнить сопоставление один-ко-многим в беглом nhibernate.Ниже приведены фрагменты моей сущности и их классы сопоставления:

public class ReportRequest : IReportRequestToBeFullyLoaded
{
    public virtual Int32? Id { get; set; }
    public virtual string Description { get; set; }
    public virtual ISet<ReportOutputEmail> ReportOutputEmails { get; set; }
}

public class ReportOutputEmail
{
    public virtual string RecipientAddress { get; set; }
    public virtual string Message { get; set; }
    public virtual ReportRequest ReportRequest { get; set; }
}

public class ReportRequestMap : ClassMap<ReportRequest>
{
    public ReportRequestMap()
    {
        Table("ReportRequest");
        Id(x => x.Id).UnsavedValue(null).GeneratedBy.Native();
        Map(x => x.Description);
        HasMany(x => x.ReportOutputEmails).Table("ReportOutputEmail")
            .ForeignKeyConstraintName("FK_ReportOutputEmail_ReportRequest")
            .KeyColumn("ReportRequestId")
            .AsSet()
            .Inverse()
            .Cascade.AllDeleteOrphan();
    }
}

public class ReportOutputEmailMap: ClassMap<ReportOutputEmail>
{
    public ReportOutputEmailMap()
    {
        References(x => x.ReportRequest)
            .ForeignKey("FK_ReportOutputEmail_ReportRequest")
            .Column("ReportRequestId");
        Map(x => x.RecipientAddress);
        Map(x => x.Message);
    }
}

Существует некоторая проблема с сопоставлением один-ко-многим между ReportRequest-> ReportOutputEmail ,
Получение ошибки:

Error: NHibernate.MappingException: (XmlDocument)(3,6): XML validation error: The  
element 'class' in namespace 'urn:nhibernate-mapping-2.2' has invalid child element  
'property' in namespace 'urn:nhibernate-mapping-2.2'. List of possible elements  expected:  'meta, subselect, cache, synchronize, comment, tuplizer, id, composite-id' in     namespace  'urn:nhibernate-mapping-2.2'.

Может кто-нибудь помочь разобраться.

Спасибо!

1 Ответ

2 голосов
/ 17 марта 2011

У вашего ReportOutputEmail нет идентификатора, он понадобится, если он будет сущностью.

Кроме того, я рекомендую вам обновить вашу копию Fluent NHibernate, поскольку об этом сообщается гораздо более полезным способом, начиная с версии 1.1 (вы получите сообщение об отсутствии личности).

...