开发环境:win7,vs2017,sqlserver2014

vs上建立一个asp.net core web项目和一个.net core的类库项目DBA

简单起见,在DBA项目中就一个类SqlServerManager:

using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection; namespace DBA
{
public class SqlServerManager : DbContext
{
private IDbConnection connection = null;
private SqlCommand command = null;
public SqlServerManager(DbContextOptions<SqlServerManager> options) : base(options) {
if(null== connection)
connection = Database.GetDbConnection();//这个GetDbConnection需要在NuGet中添加Microsoft.AspNetCore.App if (connection.State == ConnectionState.Closed)
connection.Open();
if (command == null)
command=connection.CreateCommand() as SqlCommand; } public int Insert<T>(T table)
{
try {
command.CommandText = GetInsertSqlStr(table, command.Parameters);
return command.ExecuteNonQuery();}
catch(Exception ex)
{
throw ex;
}
}
public void ExecSqlStr(string sql,Dictionary<string,object> Parameters)
{
command.CommandText = sql;
foreach(var str in Parameters.Keys)
{
var value = Parameters.GetValueOrDefault(str);
command.Parameters.Add(
new SqlParameter()
{
ParameterName="@"+str,
Value= value,
DbType= GetDbType(value.GetType())
}
);
}
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = command;
DataSet myDataSet = new DataSet();
da.Fill(myDataSet);
DataTable db = myDataSet.Tables[];
} private string GetInsertSqlStr<T>(T table,SqlParameterCollection sqlParameters)
{
string strSql = "insert into "+ typeof(T).Name + " (";
//获得泛型类型的公共属性
var pros = typeof(T).GetProperties().Where(pi => !Attribute.IsDefined(pi, typeof(NotMappedAttribute))).ToArray();
string values = "";
foreach (PropertyInfo p in pros)
{
strSql += p.Name + ",";
values += "@" + p.Name + ","; sqlParameters.Add(new SqlParameter() {
ParameterName = "@" + p.Name,
Value = p.GetValue(table),
DbType = GetDbType(p.PropertyType)
});
}
values = values.Substring(, values.Length - );
strSql = strSql.Substring(, strSql.Length - ) + ") values ("+ values+")";
return strSql;
} private DbType GetDbType(Type t)
{
switch (Type.GetTypeCode(t))
{
case TypeCode.Boolean:
return DbType.Boolean;
case TypeCode.Byte:
return DbType.Byte;
case TypeCode.DateTime:
return DbType.DateTime;
case TypeCode.Decimal:
return DbType.Decimal;
case TypeCode.Double:
return DbType.Double;
case TypeCode.Int16:
return DbType.Int16;
case TypeCode.Int32:
return DbType.Int32;
case TypeCode.Int64:
return DbType.Int64;
case TypeCode.String:
return DbType.String;
default:
return DbType.Object;
}
}
}
}

本文的重点不在于DBA项目中如何去访问数据库,这里可以用EF,也可以用ADO.NET等等,我这里用的是ADO.NET

重点在于如何在web项目中去调用DBA项目来实现数据库的访问

首先肯定是要添加DBA项目的引用。

然后在web项目的Startup类的ConfigureServices函数中添加代码:

注意这里的数据库连接字符串,里面没有用户名和密码,就这样就可以了

然后在控制器中通过构造函数来获取SqlServerManager的对象

好了,这样就可以访问数据库了,只是一个简单的例子,看看就好

asp.net core连接sqlserver的更多相关文章

  1. Asp.Net Core 连接Mysql

    上一篇文章里最后在VS里测试是没有问题的,但是在Windows命令行模式下会报错. 首先用dotnet restore命令的时候会出现error: 然后用dotnet run会出现警告,但是依旧会成功 ...

  2. ASP.net分别连接SQLserver数据库与连接Access数据库精英版

    -------------------------连接access2003 字符串------------------------- Provider=Microsoft.Jet.OLEDB.4.0; ...

  3. ASP.NET Core 连接 GitLab 与 MatterMost 打造 devops 工具

    在现代化开发工具链里面就包含了自动化的通讯工具,而日志写代码我是推到 Gitlab 平台上,我今天听了郭锐大佬的分享之后,感觉我现在的团队的自动化做的远远不够.我在他的课程上学到的最重要一句话就是做工 ...

  4. 处理asp.net core连接mysql的一个异常Sequence contains more than one matching element

    晚上在那里调程序,把mysql.data组件的nuget包进行了更新,前几天好好的程序,开始抛错,跟踪断点发现以下的异常: Unable to connect to any of the specif ...

  5. asp.net core 系列 22 EF(连接字符串,连接复原,DbContext)

    一.连接字符串 在上二篇中,ASP.NET Core 应用程序连接字符串是写死在ConfigureServices代码中,下面介绍通过配置来实现.连接字符串可以存储在 appsettings.json ...

  6. asp.net 连接sqlserver数据库

    在asp.net中连接sqlserver数据库之前,首先得确保正常安装了sqlserver2008,同时有数据库. 在项目中添加一个类DB,用来专门负责执行对数据库的增删改查.在添加的过程中会弹出下面 ...

  7. ASP.NET Core Startup类 Configure()方法 | ASP.NET Core 中间件详细说明

    ASP.NET Core 程序启动过程如下 目录 Startup 类 Configure() 方法 中间件 使用中间件 Configure 方法 的参数 IApplicationBuilder Ext ...

  8. Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库

    前言     在 .Net Core 2.2中 Microsoft.AspNetCore.App 默认内置了EntityFramework Core 包,所以在使用过程中,我们无需再从 NuGet 仓 ...

  9. 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...

随机推荐

  1. POJ2752 Seek the Name, Seek the Fame 【KMP】

    Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11602   Ac ...

  2. Office EXCEL 如何保留一位小数,并且单击这个单元格的时候没有一大串小数

    左侧有一列数据,即便我设置单元格格式,把小数位数设为1,看上去的确四舍五入,保留一位小数了,但是实际上我鼠标双击任意单元格,还是原来的数值,这样的数据如果是要发给别人的,肯定不好   如果进行选择性粘 ...

  3. shutdown abort模式丢失redo,使用隐含參数启库

    shutdown abort模式 丢失redo log 无法open数据库 通过告警报错ORA-00354: corrupt redo log block header 从该错误能够看出当前日志的re ...

  4. 硬件开发之bt输出---BT656/BT601/BT1120协议以及DM365/DM355/DM6467上使用的YUV颜色空间说明

    http://blog.csdn.net/zhouzhuan2008/article/details/17168133

  5. Spring中AOP的使用

    问题:什么是AOP? 答:AOP基本概念:Aspect-Oriented Programming,面向方面编程的简称,Aspect是一种新的模块化机制.用来描写叙述分散在对象.类或方法中的横切关注点( ...

  6. 架构师基本功:SOA

    (以下内容为个人理解,可能不够全面和准确) SOA (service-oriented architecture),面向服务的架构 啥是SOA?网上的解释,玄而又玄.俺说点人话,也许不准确,但现阶段我 ...

  7. HBase 数据迁移

    最近两年负责 HBase,经常被问到一些问题, 本着吸引一些粉丝.普及一点HBase 知识.服务一点阅读人群的目的,就先从 HBase 日常使用写起,后续逐渐深入数据设计.集群规划.性能调优.内核源码 ...

  8. 可用内存free不足 hadoop3 无法启动 手动释放缓存 cache

    [root@hadoop3 hadoop]# xlfg total used free shared buff/cache availableMem: 15 0 2 0 12 14Swap: 7 0 ...

  9. 定时邮件 已经稳定运行10天+ 从局域网linux到外网邮箱

  10. bzoj1833: [ZJOI2010]count 数字计数&&USACO37 Cow Queueing 数数的梦(数位DP)

    难受啊,怎么又遇到我不会的题了(捂脸) 如题,这是一道数位DP,随便找了个博客居然就是我们大YZ的……果然nb,然后就是改改模版++注释就好的了,直接看注释吧,就是用1~B - 1~A-1而已,枚举全 ...