繁体   English   中英

Asp.Net核心2.0应用程序与ADO.Net示例

[英]Asp.Net core 2.0 application with ADO.Net example

我想用ADO.net创建asp.net core 2.0 MVC应用程序,我搜索谷歌/微软,我在那里找到了实体框架的例子,但没有用ADO.net。

我需要,

  1. 连接字符串从配置文件中读取json或配置文件(我知道默认情况下没有Web.config,但需要从配置文件访问配置条目)。

  2. 为3层架构创建DAL。 (我知道asp.net核心不支持ADO.net,但是)我的要求是使用Sqlconnection,Sqlcommand与ADO.net中的普通MVC应用程序相同

任何人都可以通过这个或链接获得完整的理解吗? 我认为这对每个了解Asp.net MVC但没有Asp.net Core经验的人都有帮助。

我想出了以下解决方案。 也许它对你有用。

在.NET Core中,默认情况下不存在SqlClient。 您需要从NuGet Package Manager添加它。 因此,请按照以下步骤来实现此目的。

  1. 在DAL项目中使用NuGet Package Manager安装System.Data.Common
  2. 在DAL项目中使用NuGet包管理器安装System.Data.SqlClient

  3. 在项目中添加config.json。 喜欢...

     { "name": "asp.net", "private": true, "dependencies": { }, "connectionString": "data source=*************;initial catalog=****;user id=***;password=****;MultipleActiveResultSets=True;Connection Timeout=300;" } 
  4. 在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,则可以同时使用SqlConnectionSqlCommand ,例如:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM