升级nhibernate 5.3.3 NotFound.Ignore FluentNhibernate配置后无法正常工作

问题描述

也许有人赶上了同样的问题。我有一些Fluent + NHibernate版本Nhibernate ver 5.2.7的代码 实体和实体映射:

public class TermOfDelayEntity : DomainEntity
{
    public virtual long Id { get; set; }
    public virtual Enums.TermOfDelayType Type { get; set; }
    public virtual string Description { get; set; }
}

public class TermOfDelayEntityMap : AuditableDomainEntityMap<TermOfDelayEntity>
{
    public TermOfDelayEntityMap()
    {
        Schema("public");
        Table("logistic_term_of_delay");
        OptimisticLock.Version();
        LazyLoad();
        Id(x => x.Id).Column("id").GeneratedBy.Identity();
        Map(x => x.Type).Column("term_of_delay_type_id").CustomType<Enums.TermOfDelayType>();
        Map(x => x.Description).Column("description").Length(2000).Not.Nullable();
    }
}

public class ExternalClientEntity : DomainEntity
{
    public virtual long Id { get; set; }
    ...
    public virtual TermOfDelayEntity TermOfDelay { get; set; }
}

public class ExternalClientEntityMap : AuditableDomainEntityMap<ExternalClientEntity>
{
    public ExternalClientEntityMap()
    {
        Schema("public");
        Table("logistic_external_client");
        OptimisticLock.Version();
        LazyLoad();

        CompositeId()
            .KeyProperty(x => x.Id,"external_client_id")
            .KeyReference(x => x.PlatformClient,"platform_client_id");
        ....
        References(x => x.TermOfDelay,"logistic_term_of_delay_id")
               .Unique().Nullable().NotFound.Ignore().LazyLoad();
    }
}

我的C#代码:

var entities = genericRepository.LoadAll<ExternalClientEntity>()
                    .Where(x => x.Active && x.PlatformClient.Id == platformClientId)
                    .Select(s => new ExternalClientDtoModel()
                                 {
                                     Id = s.Id,Name = s.Name,......
                                     TermOfDelayId = s.TermOfDelay != null 
                                                     ? s.TermOfDelay.Id : (long?) null,.....
                                 })
                    .ToList();

此代码可以正常工作,没有任何问题(此代码返回20条记录)。然后,我将Nhibernate升级到5.3.3版(也在5.3.0上重现了此问题),并且此代码返回了4条记录。

要解决此问题(无效记录),我从References(x => x.TermOfDelay)行中删除了ExternalClientEntityMap中的NotFound.Ignore()。

public class ExternalClientEntityMap : AuditableDomainEntityMap<ExternalClientEntity>
{
    public ExternalClientEntityMap()
    {
        Schema("public");
        Table("logistic_external_client");
        OptimisticLock.Version();
        LazyLoad();

        CompositeId()
            .KeyProperty(x => x.Id,"logistic_term_of_delay_id")
               .Unique().Nullable().LazyLoad();
    }
}

我试图了解正在发生的事情。也许有人可以指出正确的答案。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...