开发环境: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. VB和VB.NET有什么区别

    作为VB6.0的后续版本,VB.NET更加稳定,而且完全面向对象.也许你还记得,VB6.0部支持继承.重载和接口,所以不是真正面向对象的.而VB.NET则支持这些面向对象特性.VB6.0有两个薄弱环节 ...

  2. hdu2222--Keywords Search+AC自己主动机模板

    题目链接:pid=2222">点击进入 KMP对模式串进行处理.然后就能够方便的推断模式串是否在目标串中出现了:这显示适合一个模式串多个目标串的情况.可是假设模式串有多个,这时假设还用 ...

  3. 【iOS系列】-使用CAGradientLayer设置渐变色

    有时候iOS开发中需要使用到渐变色,来给图片或者view盖上一层,使其显示效果更好,我们这里使用的CAGradientLayer来设置渐变色 要实现的效果如下: Demo地址---下载 // 创建渐变 ...

  4. Mac下Apache+MySQL+PHP安装

    max下是自带有Apache和php的服务器的,不需要另外安装,本文就对相关配置进行介绍. 第一:Apache 在终端中输入,下面指令即可启动Apache服务器: //启动 sudo apachect ...

  5. api多版本方案(URL)

    api多版本方案(URL) 1.利用url https://www.taofen8.com/api/v2/getXXX 2.利用自定义请求头 api-version https://www.taofe ...

  6. eclipse中将web项目部署到tomcat

    eclipse中将web项目部署到tomcat. myeclipse部署WEB项目到tomcat比较方便,但eclipse貌似默认是不会替你将web自动部署到tomcat下的.你Run as该web项 ...

  7. 第一个get请求的爬虫程序

    一:urllib库: urllib是Python自带的一个用于爬虫的库,器主要作用就是可以通过代码模拟浏览器发送请求.其被用到子模块在Python3中的urllib.request和urllib.pa ...

  8. 内存充足,但是为什么hadoop3无法启动nodemanager

    [root@hadoop3 hadoop]# xloStarting namenodes on [hadoop3]上一次登录:三 12月 27 16:06:01 CST 2017pts/24 上Sta ...

  9. 2.7 xargs和exec详解【转】

    本文转载自:http://ask.apelearn.com/question/13323 常用在查找中exec主要是和find一起配合使用,而xargs就要比exec用的地方要多了. exec  应用 ...

  10. 通过Mesos、Docker和Go,使用300行代码创建一个分布式系统

    [摘要]虽然 Docker 和 Mesos 已成为不折不扣的 Buzzwords ,但是对于大部分人来说它们仍然是陌生的,下面我们就一起领略 Mesos .Docker 和 Go 配合带来的强大破坏力 ...