[英]Asp.Net core 2.0 application with ADO.Net example
我想用ADO.net
创建asp.net core 2.0 MVC
应用程序,我搜索谷歌/微软,我在那里找到了实体框架的例子,但没有用ADO.net。
我需要,
连接字符串从配置文件中读取json或配置文件(我知道默认情况下没有Web.config,但需要从配置文件访问配置条目)。
为3层架构创建DAL。 (我知道asp.net核心不支持ADO.net,但是)我的要求是使用Sqlconnection,Sqlcommand与ADO.net中的普通MVC应用程序相同
任何人都可以通过这个或链接获得完整的理解吗? 我认为这对每个了解Asp.net MVC但没有Asp.net Core经验的人都有帮助。
我想出了以下解决方案。 也许它对你有用。
在.NET Core中,默认情况下不存在SqlClient。 您需要从NuGet Package Manager添加它。 因此,请按照以下步骤来实现此目的。
在DAL项目中使用NuGet包管理器安装System.Data.SqlClient
在项目中添加config.json。 喜欢...
{ "name": "asp.net", "private": true, "dependencies": { }, "connectionString": "data source=*************;initial catalog=****;user id=***;password=****;MultipleActiveResultSets=True;Connection Timeout=300;" }
在DAL项目中创建一个获取连接字符串的类。 在SetBasePath()中,您需要设置DAL项目的目录路径。
using System.Data; using System.Data.Common; using System.Data.SqlClient; namespace MyProject.DAL { public class SQLDataAccess { protected string ConnectionString { get; set; } public SQLDataAccess() { var configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetParent(Directory.GetCurrentDirectory()) + "/MyProject.DAL").AddJsonFile("config.json", false) .Build(); this.ConnectionString = configuration.GetSection("connectionString").Value; } private SqlConnection GetConnection() { SqlConnection connection = new SqlConnection(this.ConnectionString); if (connection.State != ConnectionState.Open) connection.Open(); return connection; } public DbDataReader GetDataReader(string procedureName, List<SqlParameter> parameters, CommandType commandType = CommandType.StoredProcedure) { DbDataReader dr; try { DbConnection connection = this.GetConnection(); { DbCommand cmd = this.GetCommand(connection, procedureName, commandType); if (parameters != null && parameters.Count > 0) { cmd.Parameters.AddRange(parameters.ToArray()); } dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); } } catch (Exception ex) { throw; } return dr; } } }
如果在.NET Standard 2.0类库中定义DAL,则可以同时使用SqlConnection
和SqlCommand
,例如:
public class MyDal
{
private readonly string _connectionString;
public MyDal(string connectionString)
{
_connectionString = connectionString;
}
public IEnumerable<string> GetSomeData()
{
using (SqlConnection conn = new SqlConnection())
{
using (SqlCommand command = new SqlCommand(_connectionString, conn))
{
...
}
}
}
}
然后,从ASP.NET Core应用程序添加对库的引用。
使用内置的依赖注入支持,您可以使用IConfiguration
注入控制器:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton(Configuration);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
app.UseMvc();
}
}
...您使用这样来提取连接字符串:
public class ValuesController : Controller
{
private readonly IConfiguration _config;
public ValuesController(IConfiguration config)
{
_config = config;
}
[HttpGet]
public IEnumerable<string> Get()
{
MyDal dal = new MyDal(_config.GetConnectionString("conn"));
return dal.GetSomeData();
}
}
连接字符串本身在appsettings.json
定义:
{
"ConnectionStrings": {
"conn": "Server=localhost;Database=database;Trusted_Connection=True;"
},
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
}
我得到了如何使用config json中的连接字符串的答案。 假设我有appsetting.json
如下
{
"connectionString": "data source=servername;initial catalog=yourdb;user id=sa;password=pwd;MultipleActiveResultSets=True;"
}
现在我想访问这个连接字符串,所以代码将是
using Microsoft.Extensions.Configuration;
using System.IO;
protected string ConnectionString { get; set; }
public GetDBConnString()
{
var configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory() + "/").AddJsonFile("config.json", false)
.Build();
this.ConnectionString = configuration.GetSection("connectionString").Value;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.