在()
似乎很傻.有没有更好的办法?
例如:
ExternalId.IfNotNullDo(() => ExternalId = ExternalId.Trim());
我收到此异常(底部的完全例外):
NHibernate.PropertyValueException was unhandled by user code
Message="not-null property references a null or transient
valueClearwave.Models.Encounters.Insurance.Patient"
Source="NHibernate"
EntityName="Clearwave.Models.Encounters.Insurance"
PropertyName="Patient"
Run Code Online (Sandbox Code Playgroud)
我已经做了很多谷歌搜索,似乎这个错误最常见的原因是当一个关联是双向的但只有一半被设置.如:Insurance.Patient =患者被叫,但Patient.Insurances.Add(保险)不是.事实上,我确实有这样的场景,但我在调用Save之前检查了对象,并且Insurance.Patient和Patient.Insurances [0]都是正确的对象.
此异常似乎引用的另一种可能性是瞬态值.在我的情况下,每个对象都是暂时的,所以我怀疑问题的根源在这里.但是,现在一切都需要暂时,因为还没有保存.我希望NHibernate能够持久存在而不是抱怨它们不会被持久存在.
以下是我映射的一些片段(流利):
public PatientMap()
{
WithTable("tPatient");
Id(x => x.Id, "uid_Patient").GeneratedBy.GuidComb
().Access.AsReadOnlyPropertyThroughCamelCaseField();
HasMany(x => x.Insurances).WithKeyColumn("uid_Patient")
.Cascade.All()
.Inverse();
...
}
public InsuranceMap()
{
WithTable("tPatientInsuranceInfo");
Id(x => x.Id,
"uid_PatientInsuranceInfo").GeneratedBy.GuidComb
().Access.AsReadOnlyPropertyThroughCamelCaseField();
References(x => x.Patient, "uid_Patient").Not.Nullable
().Cascade.All();
...
}
Run Code Online (Sandbox Code Playgroud)
那么,可能是什么问题呢?
NHibernate.PropertyValueException was unhandled by user code
Message="not-null property references a null or transient
valueClearwave.Models.Encounters.Insurance.Patient"
Source="NHibernate"
EntityName="Clearwave.Models.Encounters.Insurance"
PropertyName="Patient"
StackTrace:
at NHibernate.Engine.Nullability.CheckNullability(Object[]
values, IEntityPersister …
Run Code Online (Sandbox Code Playgroud) c# nhibernate exception nhibernate-mapping fluent-nhibernate
我最近发现了一个使用示例转换来实例化具有匿名类型的泛型的技巧.
http://brendanjerwin.com/blog/2009/03/19/anonymous-generics/
所以,这是一个巧妙的技巧,但什么时候会被使用?有任何想法吗?