如何从自定义表单使用 Oid 更新 XAF 中记录的值?

How to update value of a record in XAF, using Oid, from a custom form?

如果记录的 Oid 与我从文本框获得的输入匹配,我需要从自定义表单更新 DevExpress XAF 中记录的值。

我尝试通过以下代码使用 UnitofWork,但它不起作用:

        UnitOfWork uow = new UnitOfWork();

        CriteriaOperator op = CriteriaOperator.Parse("Oid = ?", ReceivedTextBox.Text);
        Bilty bilty = uow.FindObject<Bilty>(op);

        if (bilty == null) return;
        bilty.Received = true;

        uow.CommitChanges();

有人能告诉我我做错了什么吗?我已经尝试在官方 DevExpress 论坛上搜索解决方案,但这是我能找到的最好的解决方案。

我想问题出在 UnitofWork 连接上。您发布的代码暗示使用了默认数据层,因此 xpo 将为默认数据层创建一个新的 AccessDb 并将搜索当然找不到的对象,因为这是一个空数据库。由于您没有发布有关此自定义表单所在位置的详细信息,我假设它在同一个 Xaf 应用程序上,并且您使用了一个操作来显示它。因此,我建议您将 Xaf 应用程序实例传递给您的表单并创建一个对象空间

objectspace=application.CreateObjectSpace()

使用该对象空间而不是 UnitOfWork 来查询和更新记录。