开发环境: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. Effective C++ Item 27 少做转型操作

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie todo Item34 旧式转型 (T) expression 或 T (expressio ...

  2. 读书笔记-HBase in Action-第三部分应用-(2)GIS系统

    本章介绍用HBase存储.高效查询地理位置信息. Geohash空间索引 考虑LBS应用中常见的两个问题:1)查找离某地近期的k个地点.2)查找某区域内地点. 假设要用HBase实现高效查找,首先要考 ...

  3. Swift简单介绍 教程

     Swift是什么? Swift是苹果于WWDC 2014公布的编程语言.这里引用The Swift Programming Language的原话: Swift is a new programmi ...

  4. Linux-github 搭建静态博客

    1.在Github上创建一个新的Repository 到你的github上 https://github.com去create a new repository命名为 github.myblog 2. ...

  5. Android 中间人攻击

    0x00 Android中间人攻击的思路就是劫持局域网中被攻击机器和server间的对话.被攻击机器和server表面上工作正常,实际上已经被中间人劫持.能够从一张图来明确这个过程. 受攻击主机发送的 ...

  6. PRD编写Axure内直接编辑

    流程&页面&交互&逻辑 功能点: 1,选项类 设置默认值. 2,输入文本类 设置最多最少字符数. 3,功能按钮,如提交.发布. 判断敏感词,如果有,则点击发布的时候,悬浮提醒“ ...

  7. button和submit区别

    type=button      就单纯是按钮功能 type=submit      是发送表单 但是对于从事WEB UI的人应该要注意到,使用submit来提高页面易用性: 使用submit后,页面 ...

  8. Java中抽象类和接口的区别?

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  9. mysql13---索引使用注意

    .4唯一索引 ①当表的某列被指定为unique约束时,这列就是一个唯一索引 ) unique); 这时, name 列就是一个唯一索引. unique字段可以为NULL,并可以有多NULL(,null ...

  10. mongodb09----replicattion set--健壮性

    replication set复制集 replicattion set 多台服务器维护相同的数据副本,提高服务器的可用性.一台是服务器出问题了另外2台还可以接收干,secondary平时保持只读状态, ...