0

如果记录的 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 官方论坛上搜索解决方案,但这是我能达到的最佳解决方案。

4

1 回答 1

1

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

objectspace=application.CreateObjectSpace()

使用该 objectSpace 而不是 UnitOfWork 来查询和更新记录。

于 2018-10-24T18:57:41.127 回答