필드에 액세스하려고 시도하는 대신 속성에 액세스하려고 시도하는 중 오류가 발생하여 예상대로 작동하지 않는다는 것을 다른 사람이 확인할 수 있습니까?FluentNHibernate - ReadOnlyPropertyThroughCamelCaseField (Prefix.Underscore)
private IList<MetaPackage> _metaPackages;
public virtual IEnumerable<MetaPackage> MetaPackages
{
get
{
return _metaPackages;
}
}
유창함 매핑
HasMany<MetaPackage>(x
=>x.MetaPackages).Table("dnnSphere_Package").KeyColumn("Id")
.Inverse().LazyLoad().Cascade.AllDeleteOrphan()
.Access.ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore)
단위 테스트
new PersistenceSpecification<MetaProject>(Session)
.CheckProperty(x => x.Name, "Test")
.CheckProperty(x => x.Description, "Description")
.CheckList(x=>x.MetaPackages, new List<MetaPackage> { new
MetaPackage ("name")})
.VerifyTheMappings();
오류 :
그것은이 필드 물마루 가야한다하더라도, 부동산 세터를 찾을 수 없다는 오류가 발생합니다 , 읽기 전용 속성입니다.
System.ArgumentException: Property set method not found. at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture) at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index) at FluentNHibernate.Testing.PersistenceSpecification
1.ListValue
1.SetValue(Ob ject target) in E:\Users\epitka\Documents\DEVELOPMENT\fluent- nhibernate\src\FluentNHibernate\Testing\PersistenceSpecification.cs: line 174
스위치 전략은 ReadOnlyPropertyTrhoughPascalCaseField를 사용하는 경우가 제대로이 오류가 발생하는 경우 :
은 그래서 ReadOnlyPropertyThroughCamelCaseField (Prefix.Underscore)는 필드보다는 속성에 잘못 매핑되는 것입니다.NHibernate.PropertyNotFoundException: Could not find field '_MetaPackages' in class 'dnnSphere.Meta.Model.MetaProject'