You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XAF非持久化对象进入详情视图时提示‘请求对象未找到’报错

XAF非持久化对象详情视图报错解决

问题原因

你给非持久化对象添加了[Key]属性,这会让XAF误将其识别为持久化对象,尝试通过主键去数据库查询对应实例。但非持久化对象并未存储在数据库中,因此触发“请求的对象未找到,无法处理”错误。

另外,NonPersistentObjectBase基类已经自带Oid属性作为非持久化对象的唯一标识,不需要额外添加[Key]标记。

解决步骤

  1. 移除[Key]属性:直接删除代码中的[Key]标记,让XAF使用非持久化对象的默认跟踪机制。
  2. 修改后的代码示例:
using DevExpress.Persistent.BaseImpl;
using DevExpress.ExpressApp.DC;

[DomainComponent]
[DefaultClassOptions]
public class AcmeResult : NonPersistentObjectBase
{
    public int Id { get; set; } // 可保留Id字段,但无需加[Key]
}

额外说明

如果业务逻辑需要用自定义Id标识非持久化对象,建议重写Equals和GetHashCode方法,确保XAF能正确识别同一对象:

public override bool Equals(object obj)
{
    if (obj is AcmeResult other)
    {
        return Id == other.Id;
    }
    return base.Equals(obj);
}

public override int GetHashCode()
{
    return Id.GetHashCode();
}

内容的提问来源于stack exchange,提问作者Kirsten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 06:09:51