ag-grid on .net core with no EF
时间:2019-02-20
本文章向大家介绍ag-grid on .net core with no EF,主要包括ag-grid on .net core with no EF使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
因为工作中更多使用存储过程+Oracle, 不太适合使用Entity Framework, 作为试验写了一下.
App Context
- 为了显示大数据量, 以及考虑到控件自身的功能丰富度和support, 前端使用ag-grid控件
- 为了容器化, 采用 .net core 2.2框架
- 兼容移动端, 使用web api
- 为了更好的利用已有的存储过程, 未使用EF, 通过 ADO.Net获取数据库数据.
Project Intro
AgGridApi 网站程序项目
-
配置文件
-
launchSettings.json: 默认的程序启动配置文件
-
dbsettings.json: 配置数据库连接字符串
-
Startup.cs: 因为 .net core 疯狂的采用依赖注入, 当然确实挺好用的, startup文件是配置和注入服务的地方, 无论官方还是自定的服务.
//add mvc serv services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
//inject costumed instance
// Scoped objects are the same within a request but different across requests.
services.AddScoped<IDemo, Demo>();
-
-
Api controller, 简单的DI及RESTful风格使用Api controller, 简单的DI及RESTful风格使用
[Route("api/aggrid")]
[ApiController]
public class AgGridController : ControllerBase
{
private readonly IDemo _demo;
public AgGridController(IDemo demo)
{
_demo = demo;
}
[HttpGet]
[Route("GetData")]
public async Task<string> GetData()
{
return await Task.Run(() => _demo.GetDemoDataSource());
}
...
}
- wwwroot: 前端文件
- 下面是文件结构图
AgGridApi.Common 公用方法项目
- StaticConfigs: 读取dbsettings.json中的参数, 并作为静态类使用.
推荐绑定类读取的方式.
public class StaticConfigs
{
//Read key and get value from AppConfig section of AppSettings.json.
public static string GetDBConfig(string keyName)
{
var rtnValue = string.Empty;
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("dbsettings.json", optional: true, reloadOnChange: true);
IConfigurationRoot configuration = builder.Build();
var value = configuration["DataFactorySetting:" + keyName];
if (!string.IsNullOrEmpty(value))
{
rtnValue = value;
}
return rtnValue;
}
}
AgGridApi.Services 自定义服务项目
定义接口及其实现类
-
在startup文件中完成注入
services.AddScoped<IDemo, Demo>();
. -
在消费类的构造函数中添加接口类IDemo作为参数
public AgGridController(IDemo demo) { _demo = demo; }
, -
.net core运行时作为一个容器, 在调用消费类时将自动注入Demo实例
-
IDemo.cs 接口类
-
Demo.cs 结构实现类
DataFactory 数据库项目
- 作为类库项目, 需要在使用时配置数据库连接字符串
DataFactory.DataFactory.ConnectionString = StaticConfigs.GetDBConfig("OracleConnectionString"); DataFactory.DataFactory.SqlCommandTimeout = int.Parse(StaticConfigs.GetDBConfig("SqlCommandTimeout")); _dataServiceSample = new DataServiceFactory();
- 使用 ADO.Net调用存储过程, 获取数据.
using (OracleConnection conn = new OracleConnection(DataFactory.ConnectionString))
{
using (OracleCommand cmd = new OracleCommand(procedureName))
{
AddParams(cmd, parameters);
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = DataFactory.SqlCommandTimeout;
conn.OpenAsync();
using (DbDataAdapter da = new OracleDataAdapter(cmd))
{
da.Fill(dt);
}
}
}
Git
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- opencv cudacodec VideoReader 报错
- Flutter中富文件标签的解决方案
- JDK 15已发布,你所要知道的都在这里!
- [Concent速成] (1) 定义和共享模块状态
- 利用JS代码批量自动取消抖音关注
- 开机报错/dev/vda1 contains a file system with errors,check forced.
- centos内核的删除或修改
- chkconfig学习笔记
- 3分钟短文:说说Laravel通用缓存Cache的使用技巧
- 【技术创作101训练营】想用代码改变世界?先用好Git和Github!
- 绘制散点图(克利夫兰系列)
- 绘制分组散点图(克里夫兰点图)
- ggplot2绘制玫瑰图
- 绘制极坐标系条形图
- 四步重新认识冗余机器人的控制器设计