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

news2024/10/5 18:32:03

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

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

DevExpress v23.1正式版下载(Q技术交流:523159565)

从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中设置隔离级别,您不需要创建存储过程来设置事务级别或编写任何代码。

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

  • 执行查询时不使用SQL数据库锁定,这可以显著减少查询时间。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/911069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解Spring事务机制

Spring事务机制 一:故事背景二:核心知识2.1 Spring事务种类2.2.1 编程式事务2.2.2 声明式事务 2.2 Spring事务隔离级别2.3 Spring事务传播机制2.3.1 概念2.3.2 七种事务传播机制 2.4 Spring声明式事务实现原理2.4.1 Bean初始化创建代理对象2.4.2 执行目标…

SRM系统招投标管理:提升供应链效能

在现代商业环境中,供应链管理的成功与否对企业的运作效率和竞争力有着至关重要的影响。而招投标管理作为供应链管理的重要环节之一,其有效性和高效性对于企业的成功非常关键。为了提升招投标管理的效率和质量,越来越多的企业开始采用供应关系…

redis7高级篇2 redis的BigKey的处理

一 Bigkey的处理 1.1 模拟造数 1.截图 2.代码 &#xff1a;使用pipe 批量插入10w的数据量 cat /root/export/monidata.txt | redis-cli -h 127.0.0.1 -a 123456 -p 6379 --pipe [rootlocalhost export]# for((i1;i<10*10;i)); do echo "set k$i v$i" >>…

银河麒麟系统遇到回收站文件无法彻底删除问题及解决办法

【问题描述】 系统版本&#xff1a;银河麒麟 主机型号&#xff1a;长城世恒 用户下载了一个近100G的文件保存在/data路径下&#xff0c;导致磁盘空间100%&#xff0c;删除时未选择彻底删除而是删到回收站&#xff0c;空间未彻底释放&#xff0c;导致回收站里也无法删除掉&…

IDEA社区版启动Application==旗舰版SpringBoot

首先你要确定你的javac版本等同于你的本地的 注意你的Java Compiler 要保证和你的Javac版本一致 注意你的modules 中的resource 和 dependence中的版本一致&#xff0c;还有project 以上内容都是基本内容&#xff0c;一定要确认好 创建Application容器 参考&#xff1a;htt…

山 IT

山是地球上最常见的地貌之一&#xff0c;它们覆盖了其中的大部分表面。山脉和山峰以不同的形状和高度展现出来&#xff0c;给人们提供了壮丽的景观。 山的形成是一个长期的地质过程。前期的火山喷发和地壳运动会导致地面的隆起和抬升&#xff0c;形成高地。随着时间的推移&…

如何再钉钉内跳转自己的网页链接

1.跳转网页转码(工具地址) 原网页:https://www.baidu.com/ 转码后:https%3A%2F%2Fwww.baidu.com%2F 2:地址拼接(官方跳转地址:dingtalk://dingtalkclient/page/link?urlURL&pc_slidetrue) 替换URL: dingtalk://dingtalkclient/page/link?urlhttps%3A%2F%2Fwww.baidu.co…

【C语言】位段详解

前言 上一篇文章&#xff0c;我们学习了结构体的相关知识&#xff0c;今天我们来学习和结构体很像的位段 自定义类型&#xff1a;结构体 位段 位&#xff1a;指的是二进制位 位段的声明 位段与结构体的声明有两个不同&#xff1a; 1.位段的成员必须是 int、unsigned int 或…

实战:JVM调优命令工具

1、查看堆内存每个对象的信息 jmap -histo 12719 输出文件 jmap -histo 12719 > ./log.txt num: 序号 instances: 实例个数 bytes: 占用空间大小 class name: 类名称 2、查看堆内存信息 jmap -heap 12719 Heap Configuration: 分配的内存空间大小 Heap Usage: 使用的堆内存…

第二届人工智能与智能信息处理技术国际学术会议(AIIIP 2023)

第二届人工智能与智能信息处理技术国际学术会议&#xff08;AIIIP 2023&#xff09; 2023 2nd International Conference on Artificial Intelligence and Intelligent Information Processing 第二届人工智能与智能信息处理技术国际学术会议&#xff08;AIIIP 2023&#xf…

新闻稿写作与校对:爱校对如何确保信息准确无误?

新闻产业一直以其快节奏和时效性为标志。每一篇新闻稿件都需要在第一时间发布&#xff0c;但在这种快速的环境下&#xff0c;如何确保内容不仅快速&#xff0c;而且准确呢&#xff1f;这就是“爱校对”发挥作用的地方&#xff0c;它为新闻机构和记者提供了一种简单、高效的方法…

【音视频】语音对讲之 平台到设备

目录 反向语音流程 2.8-》设备&#xff0c;广播​编辑 设备-》2.8 回复 ​编辑 设备-》2.8 invite sdp​编辑 刚才是19008&#xff0c;我这记录的是19004​编辑 续 【音视频】国标双向对讲方案_wvp 对讲_dualven_in_csdn的博客-CSDN博客 反向语音流程 2.8-》设备&#xff0c;…

湘潭大学 湘大 XTU OJ 1215 A+B V 题解(非常详细)

链接 AB V 题面 题目描述 小明很喜欢做ab&#xff0c;他但经常忘记进位&#xff0c;所以他算881290,而不是100。 现在你给了小明一些ab的算式&#xff0c;请问他算出来会是什么&#xff1f; 输入 第一行是一个整数K&#xff0c;表示样例的个数。 每个样例占一行&#xff…

通信原理板块——基础知识(二)

微信公众号上线&#xff0c;搜索公众号小灰灰的FPGA,关注可获取相关源码&#xff0c;定期更新有关FPGA的项目以及开源项目源码&#xff0c;包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 在上一章节介绍了信号&#xff0c;…

YOLO目标检测——磁瓦缺陷数据集下载分享

磁瓦是一种常见的建筑材料&#xff0c;用于地板、墙壁等表面装饰&#xff0c;磁瓦缺陷数据集是用于研究和分析磁瓦缺陷检测问题的数据集。 数据集点击下载&#xff1a;YOLO磁瓦缺陷数据集2700图片6类别.rar

FastReport 群组未连接至数据库

当FastReport 出现群组未连接至数据库 的报错时&#xff0c;可能是GroupHeader的位置不对&#xff0c;如下图&#xff0c;往上拖一下即可。 然后就可以打印出分组的样式了&#xff1a;

怎样理解三次握手和四次挥手?

1. 三次握手 三次握手的大致流程图如下所示 &#xff08;1&#xff09;当客户端想与服务端建立连接时&#xff0c;客户端会先发送连接请求到服务端&#xff0c;该请求需要服务器接收并确认&#xff0c;这是一次握手&#xff1b; &#xff08;2&#xff09;当服务端收到了客户…

太残忍了,程序员造囚禁被拔牙,全身损伤 88%

周末的时候&#xff0c;看到一条值得大家警惕和警醒的新闻。 据九派新闻报道&#xff0c;中国一男子因未编写出赌博游戏程序&#xff0c;在越南遭到数月的囚禁、虐待。报道称&#xff0c;46 岁的受害人房立敬是一名程序员&#xff0c;由于在中国做生意遇到困难&#xff0c;于 2…

RFID工业识别技术在智能仓储管理中的创新实践

随着信息技术的飞速发展&#xff0c;智能仓储管理已然成为现代物流行业的核心趋势。在这一变革的背景下&#xff0c;RFID工业识别技术崭露头角&#xff0c;为仓储管理注入了创新动力。本文将深入探讨RFID在智能仓库自动化、盘点与分拣中的应用&#xff0c;以及如何解决传统仓储…

你知道fastjson的反序列化漏洞吗?

面试回答 当我们使用 fastjson 进行序列化的时候&#xff0c;当一个类中包含了一个接口&#xff08;或抽象类&#xff09;的时候&#xff0c;会将子类型抹去&#xff0c;只保留&#xff08;抽象类&#xff09;的类型&#xff0c;使得反序列化时无法拿到原始类型。 那么为了解决…