Свободный Nhibernate - HasMany - дочерние объекты не сохранены - PullRequest
2 голосов
/ 13 июля 2011

У меня есть объект ReportRequest, определенный как:

public class ReportRequest
{
    public virtual Int32? Id { get; set; }
    public virtual string Description { get; set; }
    public virtual IList<ReportClient> ReportClients{get;set;}
}

и ReportClient определяется как:

public class ReportClient
{
    public virtual int? Id { get; set; }

    public virtual long? ClientId { get; set; }

    public virtual string Name { get; set; }

    public virtual string EmailAddress { get; set; }

    public virtual IList<ReportClient> ChildClients { get; set; }
}

отображение для ReportClient:

public class ReportClientMap : ClassMap<ReportClient>
{
    public ReportClientMap()
    {
        Id(x => x.Id).UnsavedValue(null).GeneratedBy.Native();
        Map(x => x.ClientId);
        Map(x => x.Name);
        Map(x => x.EmailAddress).Length(255);
        HasMany<ReportClient>(x => x.ChildClients)
            .KeyColumn("ParentId")
            .KeyNullable()
            .AsBag()
            .Inverse()
            .ForeignKeyConstraintName("FK_ReportClient_ParentId");
    }
}

ChildClients необходимо сохранить как ReportClient, но с установленным ParentId.

Хотя ReportRequest и ReportClients сохраняются нормально, но проблема, с которой я сталкиваюсь, заключается в ReportClient.ChildClients не сохраняются.

Я даже не получаю никакой ошибки.

Есть идеи?

1 Ответ

7 голосов
/ 13 июля 2011

Необходимо установить каскад для сохранения-обновления для сопоставления свойств ChildClients:

  HasMany<ReportClient>(x => x.ChildClients)
        .KeyColumn("ParentId")
        .KeyNullable()
        .AsBag()
        .Inverse()
        .Cascade.SaveUpdate()
        .ForeignKeyConstraintName("FK_ReportClient_ParentId");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...