问题描述
也许有人赶上了同样的问题。我有一些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 (将#修改为@)