当前位置: 首页 > news >正文

界面组件DevExpress Reporting——增强的SQL和实体框架数据源引入

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。

本文总结了v23.1中针对DevExpress报表和BI Dashboard产品中使用的SQL和实体框架数据源引入的一系列增强。

DevExpress新旧版本帮助文档下载可进QQ qun获取:169725316

从ASP.NET Core依赖注入容器中解析实体框架核心上下文

使用实体框架的ASP.NET Core应用程序将数据作为DbContext 对象提供给报表/仪表板。

此对象在HTTP请求的范围内工作,该请求的生存期与报表/仪表板的生存期不同。在HTTP请求上下文中创建一个报告,并启动一个后台线程来获取数据和创建文档。由于在初始HTTP请求完成后报表需要数据,并且仪表板在控件中使用已兑现的数据源,因此不能使用Entity Framework创建的默认DbContext实例(在HTTP请求的范围内)。

现在为开发人员提供了一种方法,可以从绑定到实体框架数据源的仪表板/报表的ASP.NET Core依赖注入容器中解析适当的实体框架核心上下文。

下面的新API用于创建自定义服务,从依赖注入容器中返回上下文对象:

  • IEFContextProvider
  • IEFContextProviderFactory

下面的代码片段实现了一个自定义服务,允许获得适当的EF Core上下文:

using DevExpress.Data.Entity; using DevExpress.DataAccess.Web; using System; using Microsoft.Extensions.DependencyInjection; namespace WebEFCoreApp.Services { public class CustomEFContextProviderFactory : IEFContextProviderFactory { private readonly IServiceProvider serviceProvider; public CustomEFContextProviderFactory(IServiceProvider serviceProvider) { this.serviceProvider = serviceProvider; } public IEFContextProvider Create() { return new CustomEFContextProvider(serviceProvider.CreateScope()); } } public class CustomEFContextProvider : IEFContextProvider, IDisposable { private readonly IServiceScope scope; public CustomEFContextProvider(IServiceScope scope) { this.scope = scope; } public object GetContext(string connectionName, Type contextType) { // Returns the context for the specified `EFDataSource.ConnectionName`. if (connectionName == "efCoreConnection") return scope.ServiceProvider.GetRequiredService(contextType); return null; } public void Dispose() { scope.Dispose(); } }

在依赖注入容器中注册上下文和factory实现:

namespace DXWebApplication1 { public class Startup { public Startup(IConfiguration configuration, IWebHostEnvironment hostingEnvironment) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { // ... services.ConfigureReportingServices(configurator => { configurator.ConfigureWebDocumentViewer(viewerConfigurator => { // ... viewerConfigurator.RegisterEFContextProviderFactory(); }); configurator.UseAsyncEngine(); }); services.AddDbContext(options => options.UseSqlite("Data Source=file:Data/nwind.db"), ServiceLifetime.Transient); } } }
配置SqlDataSource服务查询
拦截SQL操作和命令

v23.1附带了新的IDBCommandInterceptor和IDBConnectionInterceptor接口。

这些接口允许您在建立到数据库的连接时拦截、修改和/或抑制SQL操作和命令,该列表包括低级数据库操作,例如在会话上下文中执行命令或设置键值对。一旦连接打开,您就可以在会话上下文中存储值并执行所需的请求。

设置隔离级别

设置还添加了ConnectionOptions.IsolationLevel 和 SqlQuery.IsolationLevel属性,来帮助指定用于将一个事务与另一个事务隔离的隔离级别。

您可以将IsolationLevel设置为以下值当中的一个:

  • None
  • ReadUncommitted
  • ReadCommitted
  • RepeatableRead
  • Serializable
  • Snapshot

每次执行查询时,将打开相应的事务类型(None除外)。一旦请求被执行,事务就会立即关闭。

这一策略的好处如下:

  • 过属性网格对话框在UI中设置隔离级别,您不需要创建存储过程来设置事务级别或编写任何代码。

  • 执行查询时不使用SQL数据库锁定,这可以显著减少查询时间。
http://www.jsqmd.com/news/1335437/

相关文章:

  • 白番茄面膜哪家靠谱:【蜜妙诗】植萃修护 - 17328623207
  • 基于Electron+Vue3的跨平台开源音乐播放器:LX Music桌面版技术架构解析
  • Granule核心特性解析:分级模态类型如何实现细粒度程序推理
  • 如何将DHTMLX Suite集成到Scheduler Lightbox中?让项目管理更可控!
  • TestDisk数据恢复工具:免费开源的数据拯救专家
  • 【AI时代生存必修课】:机器学习不是“学算法”,而是掌握这8类数据直觉——附NASA、华为等7家机构内部训练框架
  • DevSecOps 赛道工具横向评测:Gitee Insight 信创私有化差异化竞争力研究
  • Clipper vs OSC-52:为什么这款开源工具是远程开发的必备神器
  • PS3游戏加载终极解决方案:webMAN-MOD完整指南
  • PyWxDump项目下架:从技术探索到合规反思的完整指南
  • MetaGPT | 第十七章:外部环境与研究扩展:MGX、AFlow、SPO
  • 从0到爆款品牌故事,AI写作全流程拆解,含3套可直接套用的Prompt框架,限免24小时
  • Umi-OCR:3分钟上手免费离线OCR,让图片文字提取变得如此简单
  • 2026年发物流哪家公司便宜?一文讲清计费规则+省钱攻略 - 快递物流资讯
  • gh_mirrors/lstm1/lstm项目部署教程:在Linux环境下高效运行LSTM模型
  • Docker Minecraft服务器性能调优实战指南:7个企业级配置策略深度解析
  • 如何快速掌握戴森球计划工厂蓝图:新手到高手的3000+资源完全指南
  • 2026年4个适合出海的大湾区EMBA项目学费差异对比
  • 5分钟快速上手:用开源桌宠框架打造你的专属虚拟伙伴
  • 3步掌握Windows系统优化神器WinUtil
  • 北京3D动画制作公司推荐与选型指南
  • OpenTX遥控器固件:从入门到精通的5个关键步骤
  • C++实时渲染性能优化:从CPU瓶颈诊断到GPU指令调优的完整实战指南
  • XianyuAutoAgent:基于多专家协同的闲鱼智能客服架构设计
  • 浏览器扩展开发者必知:ExtensionPay.js错误处理与调试方法
  • 自建房装电梯,最好的时机不是盖好之后,而是还没盖的时候
  • 如何创建一个数据交互的Angular应用程序?这个工具不要错过!(二)
  • OBS多平台直播终极指南:5分钟实现一键多路推流
  • smalldiffusion核心组件解析:Model、Schedule与Diffusion如何协同工作?
  • DynamicIsland for macOS:重新定义你的Mac刘海,10大核心功能全解析