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

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

时间:2023-08-22 10:22:38浏览次数:46  
标签:报表 SQL 数据源 Reporting DevExpress scope 上下文 public

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

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

DevExpress v23.1正式版下载

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

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

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

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

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

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

下面的代码片段实现了一个自定义服务,允许获得适当的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附带了新的IDBCommandInterceptorIDBConnectionInterceptor接口。

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

设置隔离级别

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

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

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

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

这一策略的好处如下:

  • 过属性网格对话框在UI中设置隔离级别,您不需要创建存储过程来设置事务级别或编写任何代码。
界面组件DevExpress Reporting——增强的SQL和实体框架数据源引入
  • 执行查询时不使用SQL数据库锁定,这可以显著减少查询时间。

更多DevExpress线上公开课、中文教程资讯请上中文网获取

标签:报表,SQL,数据源,Reporting,DevExpress,scope,上下文,public
From: https://www.cnblogs.com/AABBbaby/p/17647846.html

相关文章

  • Visual Studio 2022 没有MySQLDatabase数据源
    解决办法: ①下载安装MySQLODBC驱动②运行ODBC数据源管理器③添加MySQL数据源,填入相应信息,测试通过即可④打开VS 工具>>连接到数据库,选择MicrosoftODBCDataSource⑤下拉列表中选择刚才新建的ODBC数据源,确定。       由此,在VS的侧边栏就可以对MySQL......
  • .NET应用UI组件DevExpress XAF v23.1 - 全新的日程模块
    DevExpressXAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。DevExpressXAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。在新版中,DevExpressXAF组件发布了全新的日程模块、能自定义详......
  • ​离线数仓数据源变更及应对方案
    离线数仓数据源的变化对数仓的影响是巨大的,所以我们不但要做好事后监控,也要做好事前的各种流程制度规范,比如所有业务的升库语句需要DBA对其进行管控,只能由DBA进行升库处理,并且做好处理记录,同时把相关变更通知到数据部门。为了防止有导致异常的致命性错误,最好能把binlog监控的就监......
  • seata学习-数据源代理
    代理的动机AT模式下执行undo-log回滚日志代理的是DateSource这个类手动代理即手动注入一个DataSourceProxy,如下@BeanpublicDataSourcedruidDataSource(){returnnewDruidDataSource()}//这里会返回名字为"dataSource"的Bean,这里@Primary@Bean(......
  • DevExpress WinForms数据编辑器组件,提供丰富的数据输入样式!(一)
    DevExpressWinForms超过80个高影响力的WinForms编辑器和多用途控件,从屏蔽数据输入和内置数据验证到HTML格式化,DevExpress数据编辑库提供了无与伦比的数据编辑选项,包括用于独立数据编辑或用于容器控件(如Grid,TreeList和Ribbon)的单元格。PS:DevExpressWinForm拥有180+组件和UI......
  • [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
    1.今天开发了一套服务程序,使用的是Odbc连接momhistory.在我本机用VS打开程序时,访问一切正常,当发布出来装在电脑上,连接momhistory时提示:[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序 2.检查ODBC数据源配置时感觉也没啥问题。3.发现“要用......
  • 界面组件DevExpress Reporting——支持图表本地化和可绑定属性
    DevExpressReporting是.NETFramework下功能完善的报表平台,它附带了易于使用的VisualStudio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。在最近的更新(v23.1)中,官方扩展了DevExpress .NETReports(即XRChart报表控件)中与图表......
  • Nacos2 + Mysql8 作为数据源的建表语句
    在MySQL中创建nacos用户,MySQL创建名为Nacos的Schema,并授权nacos用户可以访问。语句如下:mysql>createuser'nacos'@'%'identifiedby'password';mysql>createschemanacos;mysql>grantALLonnacos.*to'nacos'@'%';或者直接新建一个n......
  • Druid连接池更换Guess数据源
    目录1.遇到的问题2.更换数据源操作步骤1.添加pom依赖2.更改jdbc.properties3.初始化Druid连接池1.遇到的问题工作中有个db国产化的需求,需要在一个老项目中把DB从mysql更换为openGuess,将对应的驱动和Druid数据源改造后启动程序报错如下:java.lang.IllegalStateException:dbTy......
  • WinForm DevExpress 添加行内按钮
    1.在设计器里面添加一列,设置单元格不可编辑、只读属性   2.在所在GridView属性里面添加CustomDrawCell事件与RowCellClick事件privatevoidgvMain_CustomDrawCell(objectsender,DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgse){......