【发布时间】:2009-09-17 15:59:38
【问题描述】:
任何人都可以确认这没有按预期工作,因为我收到一个错误,它正在尝试访问属性而不是尝试访问字段。
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:属性集 找不到方法。在 System.Reflection.RuntimePropertyInfo.SetValue(对象 obj,对象值,BindingFlags invokeAttr, Binder 绑定器, Object[] 索引,CultureInfo 文化)在 System.Reflection.RuntimePropertyInfo.SetValue(对象 obj,对象值,对象 [] 索引)在 FluentNHibernate.Testing.PersistenceSpecification
1.ListValue1.SetValue(Ob 射出目标)在 E:\Users\epitka\Documents\DEVELOPMENT\fluent- nhibernate\src\FluentNHibernate\Testing\PersistenceSpecification.cs: 第 174 行
如果切换策略使用 ReadOnlyPropertyTrhoughPascalCaseField 则正确抛出此错误:
NHibernate.PropertyNotFoundException: 找不到字段“_MetaPackages” 在班上 'dnnSphere.Meta.Model.MetaProject'
因此,ReadOnlyPropertyThroughCamelCaseField(Prefix.Underscore) 似乎错误地将其映射到属性而不是字段。
【问题讨论】:
标签: nhibernate fluent-nhibernate