使用 NHibernate 映射一对多时出错

Error in mapping one-to-many with NHibernate

我是 NHibernate 和 C# 的新手,所以请多关照!

我有以下两个 NHibernate 实体:

public class Client : IEntity
{
    public virtual int Id { get; set; }

    public virtual IList<Residence> Residences { get; set; }
}

public class Residence : IEntity
{
     public virtual int Id { get; set; }

     public virtual int ClientId { get; set; }

     public virtual Client Client { get; set; }
}

并且他们从 Client 到 Residence 是一对多的关系(每个客户在他们的记录中可以有多个 residence)。

使用自动映射有此映射

public void Override(AutoMapping<Client> mapping)
{
     mapping.Id(c => c.Id).GeneratedBy.Native();
     mapping.HasMany(c => c.Residences).KeyColumn("Id").Inverse().Cascade.All();
     mapping.Table("Clients");
}

public void Override(AutoMapping<Residence> mapping)
{
     mapping.Id(p => p.Id);
     mapping.References(x => x.Client).Column("Id").Not.Nullable().Cascade.All();
     mapping.Table("Residences");
}

在我的控制器中调用客户端的 IRepository:

ClientModel newClient = ClientModel;

Client DomainModel = AutoMapper.Mapper.Map(newClient, new Client());

_clientService.Create(DomainModel);

存储库:

public class ClientService : IClientService
{
    private readonly IRepository<Client> _clientRepository;

    public void Create(Client client)
    {
        _clientRepository.Create(client);
    }
}

我对客户端使用外键有问题。

此错误:NHibernate.PropertyValueException:非空 属性 引用空值或临时值 ProjectBase.Domain.Entities.Residence.Client

我认为这是因为您尝试使用尚未添加到 table 客户端的 ForeignKey Id 客户端。但我不知道如何解决。我需要帮助解决这个错误。谢谢!

已解决,将映射更改为:

public void Override(AutoMapping<Client> mapping)
{
     mapping.Id(c => c.Id).GeneratedBy.Native();
     mapping.HasMany(c => c.Residences).Inverse().Cascade.All();
     mapping.Table("Clients");
}

and

public void Override(AutoMapping<Residence> mapping)
{
     mapping.Id(p => p.Id);
     mapping.References(x => x.Client)
}

并在客户端中添加构造函数

public Client()
{
    Residences = new List<Residence>();
}

Ty.