我正在尝试使用哈巴内罗平滑将两个关系映射到我的ClassDefs中定义的一个类。
Habanero平滑类:
[AutoMapCompulsory]
[AutoMapOneToMany(ReverseRelationshipName = "TestRules")]
public virtual Determinand Determinand
{
get { return Relationships.GetRelatedObject<Determinand>("Determinand"); }
set { Relationships.SetRelatedObject("Determinand", value); }
}
[AutoMapOneToMany(ReverseRelationshipName = "RelatedTestRules")]
public virtual Determinand RelatedDeterminand
{
get { return Relationships.GetRelatedObject<Determinand>("RelatedDeterminand"); }
set { Relationships.SetRelatedObject("RelatedDeterminand", value); }
}XML类:
<class name="Determinand" assembly="" table="tbdeterminand" displayName="Determinand">
<property name="DeterminandID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
</class>问题
当我执行我的测试来验证我的ClassDefs是否正确生成时,它失败了,给我以下错误:
测试
[Test]
public void Test_ValidateClassDefs()
{
//---------------Set up test pack-------------------
ClassDef.ClassDefs.Add(BOBroker.GetClassDefs());
//---------------Assert Precondition----------------
ClassDef.ClassDefs.ShouldNotBeEmpty();
//---------------Execute Test ----------------------
var validator = new ClassDefValidator(new DefClassFactory());
validator.ValidateClassDefs(ClassDef.ClassDefs);
}错误
Habanero.Base.Exceptions.InvalidXmlDefinitionException :未能加载关系“”RelatedDeterminand“”,因为为相关类“”defined“”定义的反向关系“”TestRules“”和为类“”LIMS.BO.TestRule“”定义的关系“”RelatedDeterminand“”没有与关系键定义的属性相同-在,,“”RelatedDeterminandID -> DeterminandID relationship RelatedDeterminandRelProp 1 RelatedDeterminandID - DeterminandID ReverseRelationship TestRulesRelProp 1 DeterminandID - DeterminandID at relationshipDef relationshipDef,IClassDef,String,,,Habanero.BO.ClassDefinition.ClassDefValidator.CheckRelationships(ClassDefCol relatedClassDef) at Habanero.BO.ClassDefinition.ClassDefValidator.CheckRelationshipsForAClassDef(IDictionary`2 loadedFullPropertyLists,IClassDef classDef,ClassDefCol classDefs) at Habanero.BO.ClassDefinition.ClassDefValidator.CheckRelationships(ClassDefCol classDefs) at Habanero.BO.ClassDefinition.ClassDefValidator.ValidateClassDefs(ClassDefCol classDefs) at LIMS.Test.BO.TestClassDefValid.Test_ValidateClassDefs() in classDefCol: 37行
发布于 2011-06-07 22:37:00
好的,最基本的问题是你用了错误的方式定义了你的自动映射关系。
[AutoMapOneToMany(ReverseRelationshipName = "RelatedTestRules")]
public virtual Determinand RelatedDeterminand应该是
[AutoMapManyToOne(ReverseRelationshipName = "RelatedTestRules")]
public virtual Determinand RelatedDeterminand单个关系,例如RelatedDeterminand将始终是OneToOne或ManyToOne。
然而,错误消息可能更有帮助。
请在http://redmine.habanerowiki.com/projects/show/habanerosmooth上记录问题,以便在这些情况下生成更有意义的错误。
https://stackoverflow.com/questions/6266585
复制相似问题