Orm 通过相关业务对象上的属性加载单个业务对象

Orm 通过相关业务对象上的属性加载单个业务对象,orm,habanero,Orm,Habanero,我正在尝试根据相关对象中的属性加载单个业务对象。在这种情况下,有一个扩展的物料,它与物料和工厂有单一的关系 此方法位于AppServer类上。 当我用这段代码运行附加的测试时,我得到了正确的结果和通过的测试,但是如果我取消注释该行 Broker.GetBusinessObject(“Plant.PlantCode类似”+PlantCode) 然后我得到异常Habanero.Base.Exceptions.InvalidPropertyNameException:给定的属性名称“PlantCode

我正在尝试根据相关对象中的属性加载单个业务对象。在这种情况下,有一个扩展的物料,它与物料和工厂有单一的关系

此方法位于AppServer类上。 当我用这段代码运行附加的测试时,我得到了正确的结果和通过的测试,但是如果我取消注释该行
Broker.GetBusinessObject(“Plant.PlantCode类似”+PlantCode)

然后我得到异常
Habanero.Base.Exceptions.InvalidPropertyNameException:给定的属性名称“PlantCode”在类“ExtendedMaterial”的属性集合中不存在

我做错了什么

    public ExtendedMaterial GetExtendedMaterial(string materialCode, string plantCode)
    {
      //  return Broker.GetBusinessObject<ExtendedMaterial>("Plant.PlantCode LIKE " + plantCode);
        return Broker.GetBusinessObjectCollection<ExtendedMaterial>("Plant.PlantCode LIKE " + plantCode).FirstOrDefault();

    }


    [Test]
    public void GetExtendedMaterial_WhenExists_ShouldReturnExtendedMaterial()
    {
        //---------------Set up test pack-------------------

        var material = CreateSavedMaterial();
        var plant = GetBOTestFactory<Plant>().CreateSavedBusinessObject();
        var extendedMaterial = CreateSavedExtendedMaterial(plant, material);
        IAppServer appServer = new AppServer(CreateDeviceManagerWithDevice());
        //---------------Assert Precondition----------------
        Assert.AreSame(plant, extendedMaterial.Plant);
        Assert.AreSame(material, extendedMaterial.Material);

        //---------------Execute Test ----------------------
        var actualExtendedMaterial = appServer.GetExtendedMaterial(material.Code, plant.PlantCode);
        //---------------Test Result -----------------------
        Assert.AreSame(extendedMaterial, actualExtendedMaterial);
    }
public ExtendedMaterial GetExtendedMaterial(string materialCode,string plantCode)
{
//return Broker.GetBusinessObject(“Plant.PlantCode类似“+PlantCode”);
return Broker.GetBusinessObjectCollection(“Plant.PlantCode类似“+PlantCode”).FirstOrDefault();
}
[测试]
public void GetExtendedMaterial\u当列表\u应返回ExtendedMaterial()时
{
//---------------设置测试包-------------------
var material=CreateSavedMaterial();
var plant=GetBOTestFactory().CreateSavedBusinessObject();
var extendedMaterial=CreateSavedExtendedMaterial(工厂、材料);
IAppServer appServer=新的appServer(CreateDeviceManager WithDevice());
//---------------断言前提条件----------------
Assert.AreName(plant,extendedMaterial.plant);
Assert.AreName(material,extendedMaterial.material);
//---------------执行测试----------------------
var ACTIVALEXTENDEDMATERIAL=appServer.GetExtendedMaterial(material.Code,plant.PlantCode);
//---------------测试结果-----------------------
Assert.AreName(扩展材料、实际趋势材料);
}

如果您的DataAccessor是DataAccessorDB,那么这是可行的,但我最近在一些单元测试中注意到,它对DataAccessorInMemory不起作用。尝试使用db进行测试,看看是否有效。如果没有,请将错误记录在

Hi@GloryDev。您使用的是什么版本的Habanero?SourceForge的最新中继线此问题现已修复,将在下一版本的Habanero中解决