server使用abp中调用存储过程 sql_ABP中连接已有数据库执行Sql或存储过程
一:在EntityFramework项目中创建类如:ZSWDbContext。
public classZSWDbContext : AbpDbContext
{public ZSWDbContext() : base("ZSWConnectionString")
{//这里设置不会执行//Database.SetInitializer(null);
}}
二:在DataModule.cs类中设置DbContext在项目启动时不检测数据库的一致性。
否则会报The model backing the 'ApplicationDbContext' context has changed since the database was created. Consider using Code First Migrations to update错误。
[DependsOn(typeof(AbpZeroEntityFrameworkModule), typeof(AmoiCoreModule))]public classAmoiDataModule : AbpModule
{public override voidPreInitialize()
{
Database.SetInitializer(new CreateDatabaseIfNotExists());
Database.SetInitializer(null);
Configuration.DefaultNameOrConnectionString= "Default";
}public override voidInitialize()
{
IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
}
}
三:在Core项目中定义执行Sql的接口:
public interfaceISqlExecuter
{///
///执行给定的命令///
/// 命令字符串
/// 要应用于命令字符串的参数
/// 执行命令后由数据库返回的结果
int Execute(string sql, params object[] parameters);///
///创建一个原始 SQL 查询,该查询将返回给定泛型类型的元素。///
/// 查询所返回对象的类型
/// SQL 查询字符串
/// 要应用于 SQL 查询字符串的参数
///
IQueryable SqlQuery(string sql, params object[] parameters);
}
然后在EntityFramework中实现该接口:
public classSqlExecuter : ISqlExecuter, ITransientDependency
{private readonly IDbContextProvider_dbContextProvider;public SqlExecuter(IDbContextProviderdbContextProvider)
{
_dbContextProvider=dbContextProvider;
}///
///执行给定的命令///
/// 命令字符串
/// 要应用于命令字符串的参数
/// 执行命令后由数据库返回的结果
public int Execute(string sql, params object[] parameters)
{return_dbContextProvider.GetDbContext().Database.ExecuteSqlCommand(sql, parameters);
}///
///创建一个原始 SQL 查询,该查询将返回给定泛型类型的元素。///
/// 查询所返回对象的类型
/// SQL 查询字符串
/// 要应用于 SQL 查询字符串的参数
///
public IQueryable SqlQuery(string sql, params object[] parameters)
{return _dbContextProvider.GetDbContext().Database.SqlQuery(sql, parameters).AsQueryable();
}
}
四:在构造函数中注入:
private readonlyISqlExecuter _sqlExecuter;publicAppService(ISqlExecuter sqlExecuter)
{
_sqlExecuter=sqlExecuter;
}
然后调用存储过程:
const string sql = "dbo.ResourceDataSync @STATION";var list = _sqlExecuter.SqlQuery(sql, new SqlParameter("@STATION", "石家庄站")).ToList();
注意的地方:
ABP默认是开启事务的,如果在Service中同时调用不同的数据库,会出现
服务器×××上的MSDTC不可用解决办法 错误,关闭事务即可解决:
[UnitOfWork(isTransactional: false)]
参考博客:
server使用abp中调用存储过程 sql_ABP中连接已有数据库执行Sql或存储过程相关推荐
- 【Groovy】闭包 Closure ( 闭包中调用 Groovy 脚本中的方法 | owner 与 delegate 区别 | 闭包中调用对象中的方法 )
文章目录 一.闭包中调用 Groovy 脚本中的方法 二.owner 与 delegate 区别 三.闭包中调用 Groovy 对象中的方法 一.闭包中调用 Groovy 脚本中的方法 在 Groov ...
- JSP中调用java类中的方法
JSP中调用java类中的方法 1.新建一个项目,在src文件夹下添加一个包:如:test 2.再在包中添加一个类:如 package test; public class conDatabase { ...
- SQLServer 中存储过程返回的三种方式( 包括存储过程的创建, 在存储过程中调用, 在VS中调用的方法)...
存储过程有三种返回: 1. 用return返回数字型数据 2. 用返回参数返回结果,可以返回各种数据类型(通过游标来循环查询结果每一行) 3. 直接在存储过程中用select返回结果集,可 ...
- oracle中调用过程,oracle中如何调用存储过程
oracle中如何调用存储过程 发布时间:2020-03-08 03:28:03 来源:51CTO 阅读:511 作者:lxg290 一.通过pls块来调用存储过程: declare p_dzno v ...
- php中调用脚本,PHP中如何调用RScript脚本(附代码)
这篇文章主要介绍了PHP中如何调用RScript脚本,有一定的参考价值,感兴趣的朋友可以参考一下,希望对你有所帮助! 由于某个原因,需要在PHP中调用R语音进行绘制图像.经过多方百度,目前大部分解决方 ...
- C/C++中调用api设置mysql连接的编码方式
MySQL在C/C++中调用api设置连接mysql的编码方式有以下几种方法: 1. mysqli_set_charset 调用示例: [cpp] view plain copy ret = mysq ...
- 在jsp中调用常量类中的属性值
在jsp中想要调用常量类中的属性值方法: 1. 在jsp中导入此常量类 <%@page import="com.Zyp.constant.FlagConstant"%& ...
- VC6中调用.dll文件中的函数——傻瓜式教程
决这一问题上的 帮助. 先声明下,我此前从未涉及过Windows 下的编程,所以对于懂了这么点东西就要写篇文章, 大家可不要鄙视啊. 实际上,写这篇文章的最主要原因是,我觉得调用.dll 文件里的函数 ...
- java中调用js_java编程中实现调用js方法分析
本文实例讲述了java编程中实现调用js方法.分享给大家供大家参考,具体如下: /* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEng ...
- [Android6.0]App中调用init.rc中的服务,从而运行shell脚本
Author: Younix Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.07 需求:希望在 Android App 中添加 ...
最新文章
- python输入输出-python输入与输出
- 【Linux】一步一步学Linux——cat/tac命令(38)
- utm虚拟机安装linux,UTM: 在 iOS 上安装 Windows 或 Linux 等系统及虚机安装过程
- P2257 YY的GCD
- 网络启动安装linux客户机nfs设置,NFS服务端和客户端安装配置
- jsp前三章测试改错题
- 【免费毕设】asp.net服装连锁店管理系统的设计与开发(源代码+lunwen)
- linux日志.pdf,一种用于LINUX的AUDIT日志分析方法.pdf
- jQuery右键菜单ContextMenu使用笔记
- android图片选择器实现说明
- 不确定性原理的前世今生 · 数学篇(一)
- android 滤镜录制,Android Camera 实时滤镜
- 计算机星期六星期天的那个函数,WPS表格日期与时间函数
- JMeter接口测试工具基础 — Badboy工具
- Bumped Map And Normal Map
- linux系统的种类
- 程序员通常都有哪些业余爱好
- h3c查在线计算机,H3C 交换机查看所有端口状态的命令
- C#身份证验证封装的函数方法
- TwinCAT3常见问题1
热门文章
- mysql中explain使用
- MySQL优化(二)
- tf入门-池化函数 tf.nn.max_pool 的介绍
- weblogic系列漏洞整理 -- 1. weblogic安装
- 最新友盟6.1.1集成遇到的坑,自定义分享界面实现(跳转控制器做分享)
- border-collapse
- 再回首,Java温故知新(六):Java基础之变量
- perl 脚本学习-----两个文件排序之后输入到一个文件
- 按之字形顺序打印二叉树(C++)
- Security+ 学习笔记51 风险分析