Orm 尝试使用Habanero Smooth创建与XML定义的类的两个关系 我试图使用Habanero Smooth将两个关系映射到一个类,该类在我的ClassDefs中定义。 哈巴内罗平滑级: 错误

Orm 尝试使用Habanero Smooth创建与XML定义的类的两个关系 我试图使用Habanero Smooth将两个关系映射到一个类,该类在我的ClassDefs中定义。 哈巴内罗平滑级: 错误,orm,smooth,habanero,Orm,Smooth,Habanero,Habanero.Base.Exceptions.InvalidXmlDefinitionException:无法加载关系“RelatedDeterminand”,因为为相关类“Determinand”定义的反向关系“TestRules”和为类“LIMS.BO.TestRule”定义的关系“RelatedDeterminand”的属性与关系键-未找到RelatedDeterminandID->DeterminandID的匹配RelProp 关系RelatedDetermination和LPROP

Habanero.Base.Exceptions.InvalidXmlDefinitionException:无法加载关系“RelatedDeterminand”,因为为相关类“Determinand”定义的反向关系“TestRules”和为类“LIMS.BO.TestRule”定义的关系“RelatedDeterminand”的属性与关系键-未找到RelatedDeterminandID->DeterminandID的匹配RelProp 关系RelatedDetermination和LPROP 1 RelatedDeterminationAndId-DeterminationAndId 反向相关性测试规则relprop 1 determinationAndId-determinationAndId 在Habanero.BO.ClassDefinition.ClassDefValidator.CheckReverseRelationshipRelKeyDefProps(IRelationshipDef relationshipDef,IClassDef relatedClassDef,String reverseRelationshipName,IRelationshipDef reverseRelationshipDef,IClassDef classDef) 在Habanero.BO.ClassDefinition.ClassDefValidator.ValidateReversrelationship(IClassDef classDef、IRelationshipDef relationshipDef、IClassDef relatedClassDef) 在Habanero.BO.ClassDefinition.ClassDefValidator.CheckRelationshipsForAClassDef(IDictionary`2 LoadedFullPropertyList、IClassDef classDef、ClassDefCol classDefs) 在Habanero.BO.ClassDefinition.ClassDefValidator.CheckRelationships(ClassDefCol classDefs)中 在Habanero.BO.ClassDefinition.ClassDefValidator.ValidateClassDefs(ClassDefCol ClassDefCol)中
在TestClassDefValid.cs:第37行的LIMS.Test.BO.TestClassDefValid.Test\u ValidateClassDefs()中,基本问题是您以错误的方式定义了自动映射关系

[AutoMapOneToMany(ReverseRelationshipName = "RelatedTestRules")]
public virtual Determinand RelatedDeterminand
应该是

[AutoMapManyToOne(ReverseRelationshipName = "RelatedTestRules")]
public virtual Determinand RelatedDeterminand
单一关系,例如RelatedDetermination,将始终是一对一或多对一

不过,错误消息可能更有用


在这些情况下,请登录一个问题,以产生一个更有意义的错误。

哇,如果您不知道要查找什么,那将很难发现。我想很明显,如果你在一个类上定义一个关系,它应该是多对一而不是一对多,因为你是从这个类的角度来看待这个关系的。我认为获得更好的错误信息是至关重要的。您还可以添加一个检查,查看您放置[AutoMapOneToMany]属性的属性是否至少是可枚举的。smooth中有很多代码可以对多个和单个Rel进行反向工程,因此smooth添加此检查应该非常容易。
            [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);
            }
[AutoMapOneToMany(ReverseRelationshipName = "RelatedTestRules")]
public virtual Determinand RelatedDeterminand
[AutoMapManyToOne(ReverseRelationshipName = "RelatedTestRules")]
public virtual Determinand RelatedDeterminand