个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

DevExpress Universal v22.2 更新亮点解析(十四):XAF - 跨平台App

原创
软件开发
来源:DevExpress
ui界面
DevExpress
.net
2022-12-20
ui界面
DevExpress
.net

XAF - 跨平台 .NET App UI v22.2

XAF Blazor

新的渲染和大小模式

DevExpress Blazor 数据网格 (DxGrid)、编辑器、布局和导航组件现在使用我们优化的呈现引擎而不是 Bootstrap。此更改将使我们能够使用以下新功能/特性扩展我们的 Blazor 组件套件:

• 通过更少的 JavaScript 互操作调用提高了渲染性能。

• 跨 DevExpress Blazor 组件的一致外观。

我们新的渲染引擎显着提高了现有 Blazor大小模式 的功能:

• Blazor 组件(无论使用何种大小模式)都被缩小以满足“密集”界面的要求,并在屏幕上显示更多相关信息。新的大尺寸模式反映了过去的“中号”。新的中模式更接近于过去的“小”模式。我们新的小型模式允许您提供类似于 Microsoft Outlook 等桌面应用程序的界面。

• 新的大小模式适用于我们的 Blazor 数据网格 (DxGrid)、选项卡、弹出窗口和其他以前不支持大小模式选项的 UI 组件。

• 大小模式现在提供更一致的用户体验,并影响受支持的 Blazor 组件的所有间距/大小。例如,我们的 Blazor Form Layout 组件根据选定的大小模式调整项目/组之间的填充。


 

XAF Blazor 应用程序紧凑模式、DevExpress


 

DxGridListEditor 中的其他增强功能

我们向 DxGridListEditor 组件添加了以下增强功能:

• ExportController在列表视图中包含导出到操作。

• 模型编辑器包含列的 MinWidth 选项。

• 您可以根据需要创建自定义摘要。有关详细信息,请参阅以下主题:如何:从控制器扩展和访问应用程序模型节点。

 

导出到 Excel - XAF Blazor、DevExpress


 

拆分视图布局

我们为 Blazor 应用程序中的列表视图引入了一种新的 ListViewAndDetailView 显示模式。受 Microsoft Outlook 中的紧凑视图的启发,此新功能允许您将数据呈现为同步的 ListView 和 DetailView(并排显示)。


 

拆分视图布局 - XAF Blazor、DevExpress


 

布局选项卡 - 延迟加载

布局选项卡现在支持延迟加载。当Tab被激活并持续在DOM中时,将呈现标签的内容。


 

查找属性编辑器中的多列

查找属性编辑器现在可以在下拉列表中显示多列。编辑器从应用程序模型中的 Lookup ListView 节点获取列信息。

 

查找属性编辑器中的多列 - XAF for Blazor, DevExpress


 

展开/折叠布局组

您现在可以展开/折叠布局组。激活IsCollapsibleGroup选项以启用此功能。使用IsGroupCollapsed属性在代码中指定组的展开/折叠状态。


 

展开/折叠布局组 - XAF Blazor、DevExpress


 

DxGridListEditor 中的内联编辑

用户现在可以内联编辑数据或使用编辑表单。可以显示编辑表单而不是编辑行(或显示在浮动窗口中)。使用InlineEditMode属性指定编辑模式。文档


 

展开/折叠布局组 - XAF Blazor、DevExpress


 

增强的 Accordion 和树状导航

我们集成了一个新的 DevExpress Blazor Accordion 组件并支持通用控制选项(例如,图像、视图变体、在单独的浏览器选项卡中打开项目等)。


 

Accordion:侧边导航 - XAF Blazor、DevExpress


 

常见增强功能

.NET 7 支持

XPO 的 ORM 数据模型设计器、XAF 的模型编辑器和解决方案向导在 v22.2 中支持最新的 Visual Studio 2022 和 .NET 7 版本。



 

防止导航权限的读取访问

我们实施了新的验证规则来改进对访问权限的控制。在此版本中,当您拒绝访问特定角色的导航项时,XAF 会通知您是否仍然为具有分配角色的用户打开关联的类型权限。该警告有助于防止对特定对象类型进行未经授权的访问。


 

XPO 连接提供程序增强功能

XPO 现在支持以下数据库引擎的最新版本:

Microsoft SQL Server 2019 和 2022(Microsoft.Data.SqlClient.dll 5.0.0 和 System.Data.SqlClient.dll 4.6.1.4)

Oracle 21c (Oracle.ManagedDataAccess.Core.dll 3.1.21.1)

PostgreSQL 15 (Npgsql.dll 6.0.7.0)

MySQL 服务器 8(MySql.Data.dll 8.0.31.0 和 MySqlConnector.dll 2.1.13)

SQLite(Microsoft.Data.SQLite.dll 6.0.10 和 ystem.Data.SQLite.dll 1.0.116.0)

VistaDB 6.4 (VistaDB.6.dll 6.4.0.0)


 

实体框架核心

EF Core 6 ORM 支持

您现在可以使用 Entity Framework Core 6 访问所有基于 .NET 6 的 XAF 应用程序(WinForms、Blazor 和 Web API 服务)中的数据。


 

EF Core 的内置属性更改通知

您现在可以使用更改跟踪代理在通过 Entity Framework Core 6 访问数据时自动检测对象属性更改。启用 DbContextOptions.UseChangeTrackingProxies 选项后,您不再需要实施 INotifyPropertyChanged 和 INotifyPropertyChanging 来通知客户端属性值已更改.


这个新的增强功能允许您简化业务类的实施。


考虑以下示例。这是 v22.1 中业务对象的实现:


C#

public class BusinessObject : INotifyPropertyChanged {

    int id;

    string name;

    public int Id {

        get { return id; }

        set {

            if (id != value) {

                id = value;

                OnPropertyChanged();

            }

        }

    }

    public string Name {

        get { return name; }

        set {

            if (name != value) {

                name = value;

                OnPropertyChanged();

            }

        }

    }

    protected void OnPropertyChanged([CallerMemberName]string propertyName = null) {

        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

    }

    public event PropertyChangedEventHandler PropertyChanged;

}

这就是它在 v22.2 中的转换方式:


C#

public class BusinessObject {

    public virtual int Id { get; set; }

    public virtual string Name { get; set; }

}

可以对实现 IObjectSpaceLink 的对象进行相同的更改。例如,这是 v22.1 中业务对象的实现。


C#

public class BusinessObject : IObjectSpaceLink {

    // ...

    public void SomeAction() {

        // some business-logic uses ObjectSpace

    }


    IObjectSpace objectSpace;

    IObjectSpace IObjectSpaceLink.ObjectSpace {

        get { return objectSpace; }

        set { objectSpace = value; }

    }

}

这就是它在 v22.2 中的样子。


C#

public class BusinessObject {

    // ...

    public void SomeAction() {

        var objectSpace = ((IObjectSpaceLink)this).ObjectSpace;

        // some business-logic uses objectSpace

    }

}

配置 EF Core DbContext 时,调用 DbContextOptionsBuilder.UseObjectSpaceLinkProxies 方法为所有持久类启用自动 IObjectSpaceLink 实现。阅读以下 MSDN 主题以了解更多信息:DbContextOptions。


使用 XAF 解决方案向导创建的所有新项目默认启用 UseChangeTrackingProxies 选项。



 

EF Core 业务对象的新基类

抽象 DevExpress.Persistent.BaseImpl.EF.BaseObject 类包括一个关键属性并实现IObjectSpaceLink和IXafEntityObject接口。从“BaseObject”继承以避免样板代码并在您的业务对象中实施最佳实践。


C#

public class BusinessObject : BaseObject {

    public virtual int MyProperty { get; set;}

        // The OnCreated() method is a part of the IXafEntityObject interface implementation

        public override void OnCreated() {

            // ObjectSpace is a part of the IObjectSpaceLink interface implementation

            MyProperty = ObjectSpace.GetObjectsQuery<BusinessObject>().Count();

        }

}

 

.NET APP安全和Web API服务

您现在可以使用 Entity Framework Core 6 访问我们后端 Web API / REST API 应用程序中的数据。我们的 Web API 服务的基本功能(CRUD、身份验证和授权)作为我们的.NET App Security & Web API Service 的一部分免费提供。


 

.NET APP 安全和 Web API 服务,DevExpress


 

报表模块支持

使用服务端点(又名报表模块) 从数据库中的报表模板和过滤数据下载 PDF 。使用api/Report/DownloadByKey、api/Report/DownloadByName端点,您可以从存储在数据库中的 ReportDatav2 容器下载数据。


每个 ReportDatav2 都链接到一个“XtraReport”、报表数据源和在 Visual Studio IDE 中设计的数据模型。您可以根据需要传递报表容器标识符、数据源条件和其他参数。


XAF 的应用程序向导自动将ReportController添加到新的 Web API 应用程序。您可以扩展和修改此端点以满足特定要求。


注意:此端点尊重安全权限。

 

我们的 Web API 服务的这个选项作为DevExpress 通用订阅的一部分提供。


 

审计追踪支持

使用服务端点(审计跟踪模块) 记录数据库历史变化。在 Web API 端点中通过 ORM 进行的数据更改不会被忽视。您可以在 RDBMS 或 XAF 的管理 UI(WinForms、Blazor 和/或 ASP.NET Web Forms)中查看相关的日志历史记录。


 

我们的 Web API 服务的这个选项作为DevExpress 通用订阅的一部分提供。


 

文件附件支持

使用服务端点(文件附件模块) 下载存储在数据库中的 BLOB 数据。使用api/MediaFile/DownloadStream端点,您可以从数据模型中声明的 FileData、MediaDataObject、Image 或字节数组属性下载数据。


注意:此端点尊重安全权限。


我们的 Web API 服务的这个选项作为DevExpress 通用订阅的一部分提供。


 

验证模块支持

使用内置(超过 10 个)或自定义验证规则 - 验证模块检查我们 Web API 服务中输入数据的状态。您现在可以使用我们的 IValidator 服务来验证自定义端点中的输入数据。文档


 

我们的 Web API 服务的这个选项作为DevExpress 通用订阅的一部分提供。


 

非持久对象支持

您现在可以在我们的 Web API 服务中对非持久对象和代理对象执行 CRUD 操作(与其他持久对象的方式相同)。我们建议您从NonPersistentBaseObject或其他具有关键属性的类继承,以对非持久性类实施最佳实践。


 

我们的 Web API 服务的这个选项作为DevExpress 通用订阅的一部分提供。


 

内置单元测试基础设施

我们的 MainDemo 应用程序现在包括一个预配置的测试项目,其中包含基类和帮助程序以及适用于最流行使用场景的固定装置。该项目应帮助 API 开发人员为 CRUD 操作和自定义 Web API 服务端点编写单元测试。


C#

[TestFixture]

public class MyWebApiTests : BaseWebApiTest {

    [Test]

    public async Task TestPostDelete() {

        var newResult = await api.PostAsync(

            new TestObject { TestProperty = "test" }

        );

        Assert.NotNull(await api.GetByKeyAsync<TestObject>(newResult.Oid.ToString()));

        var deleted = await api.DeleteAsync<TestObject>(newResult.Oid.ToString());

        Assert.AreEqual(newResult.Oid, deleted.Oid);

    }

    [TestCase(typeof(Employee))]

    [TestCase(typeof(Paycheck))]

    [TestCase(typeof(Position))]

    public async Task TestGetBasic(Type objectType) {

        var result = await api.GetAllAsync(objectType);

        Assert.Greater(result.Length, 0);

    }

}

我们的 Web API 服务的这个选项作为DevExpress 通用订阅的一部分提供。


 

新的预构建代码和项目错误诊断

我们在 v22.2.3 + 使用项目转换器(重大变更)启用了XAF/XPO 错误诊断(作为 DevExpress.ExpressApp.CodeAnalysis NuGet 包的一部分提供)。我们希望这将节省您在 Visual Studio 中的时间或使用您的 CI/CD 工作流验证您的构建质量。


在此更新中,我们还添加了以下新诊断:

• 内部 ShowViewStrategy.ShowView 方法调用而不是推荐的公共 ShowViewInPopupWindow、ShowMessage API 或使用操作。

• 检测只读属性(非公共或缺少设置器)的冗余 NonPersistentAttribute。

• 检测 XPCollection 属性的冗余 ExplicitLoadingAttribute。

• 检测 XPO 类中的冗余 IObjectSpaceLink(因为 Session 属性已经存在)。

• 检测 XPO 类中的冗余 IXafEntityObject(因为 AfterConstruction、OnSaving 和 OnLoaded 方法可用)。

• 不正确的 XAF 控制器实例化,如“new DialogController()”。

• 避免在基于 XPO 的 XAF 项目中使用无参数构造函数创建新的 Session/UnitOfWork。

• 检测实体框架或非持久性 POCO 类或其成员中的 XPO 特定属性。

• 在 XPO 方法调用中使用封闭属性名称。

• 使用受支持的 EF Core 包版本。

• 使用不带类型参数的通用 XPCollection<T> 类、GetCollection<T> 方法和 AssociationAttribute 来声明您的关联属性。


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508