彩票走势图

跨平台.NET应用UI组件DevExpress XAF v22.2亮点 - 实体框架核心功能增强

原创|产品更新|编辑:龚雪|2023-06-15 10:24:55.203|阅读 74 次

概述:在新版中增强了DevExpress XAF实体框架的核心功能、支持EF Core 6 ORM等,欢迎下载最新版体验!

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。

在新版中增强了DevExpress XAF实体框架的核心功能、支持EF Core 6 ORM等,欢迎下载最新版体验!

DevExpress技术交流群8:523159565      欢迎一起进群讨论

实体框架核心功能
支持EF Core 6 ORM

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

EF Core内置属性更改通知

当用户通过Entity Framework Core 6访问数据时,现在可以使用变化跟踪代理来自动检测对象属性的变化。一旦启用了选项,将不再需要实现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。

默认情况下,使用XAF Solution Wizard创建的所有新项目都启用了UseChangeTrackingProxies选项。

EF Core业务对象的新基类

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

.NET应用安全和Web API服务

用户现在可以使用Entity Framework Core 6来访问后端Web API / REST API应用程序中的数据,新版本中的Web API Service (CRUD、身份验证和授权)是免费的,作为.NET App Security & Web API Service的一部分提供。

DevExpress XAF v22.2新版图集
支持报表模块

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

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

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

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

支持审计跟踪

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

支持文件附件

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

支持验证模块

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

支持非持久对象

现在用户可以在Web API Service中对非持久性和代理对象执行CRUD操作(与其他持久性对象的方式相同),建议您从NonPersistentBaseObject或其他具有key属性的类继承,以强制执行非持久化类的最佳实践。

内置单元测试基础设施

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

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);
}
}


DevExpress企业定制服务

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP