首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用Habanero创建到XML定义的类的两个关系

尝试使用Habanero创建到XML定义的类的两个关系
EN

Stack Overflow用户
提问于 2011-06-07 22:17:02
回答 1查看 82关注 0票数 1

我正在尝试使用哈巴内罗平滑将两个关系映射到我的ClassDefs中定义的一个类。

Habanero平滑类:

代码语言:javascript
复制
    [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类:

代码语言:javascript
复制
   <class name="Determinand" assembly="" table="tbdeterminand" displayName="Determinand">
          <property name="DeterminandID" type="Guid" readWriteRule="WriteNew" compulsory="true" />
   </class>

问题

当我执行我的测试来验证我的ClassDefs是否正确生成时,它失败了,给我以下错误:

测试

代码语言:javascript
复制
            [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行

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-07 22:37:00

好的,最基本的问题是你用了错误的方式定义了你的自动映射关系。

代码语言:javascript
复制
[AutoMapOneToMany(ReverseRelationshipName = "RelatedTestRules")]
public virtual Determinand RelatedDeterminand

应该是

代码语言:javascript
复制
[AutoMapManyToOne(ReverseRelationshipName = "RelatedTestRules")]
public virtual Determinand RelatedDeterminand

单个关系,例如RelatedDeterminand将始终是OneToOne或ManyToOne。

然而,错误消息可能更有帮助。

请在http://redmine.habanerowiki.com/projects/show/habanerosmooth上记录问题,以便在这些情况下生成更有意义的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6266585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档