How to connect to SQL Server from .Net Core without using Entity Framework?

前端 未结 3 896
無奈伤痛
無奈伤痛 2021-02-05 03:37

How can we connect to SQL Server from .Net Core without using Entity Framework?

3条回答
  •  走了就别回头了
    2021-02-05 04:16

    Here is a solution for an ASP.NET MVC Core 3.1 project tested in Visual Studio 2019 community edition.

    Create a small database in SQL Express.

    Then add a few lines to appsettings.json for the connection strings:

      "ConnectionStrings": {
        //PROD on some server
        "ProdConnection": "Server=somePRODServerofYours;Database=DB_xxxxx_itemsubdb;User Id=DB_xxxxx_user;Password=xxsomepwdxx;Integrated Security=false;MultipleActiveResultSets=true;encrypt=true",
    
        //DEV on localhost
        "DevConnection": "Server=someDEVServerofYours;Database=DB_xxxxx_itemsubdb;User Id=DB_xxxxx_user;Password=xxsomepwdxx;Integrated Security=false;MultipleActiveResultSets=true;"
      },
    

    Then use code similar to the following in your controller ....

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Hosting;
    using Microsoft.Extensions.Configuration;
    using System.Data.SqlClient;
    using System.Data;
    
    namespace SomeNameSpace.Controllers
    {
        //This Model class should be saved somewhere else in your project.
        //It is placed here for simplicity.
        public class XtraSimpleContent
        {
            public string UserName { get; set; }
            public string References { get; set; }
            public string CreatedTime { get; set; }
        }
    
        public class CodeNotesController : Controller
        {
            public IConfiguration Configuration { get; }
            public string connStr = String.Empty;
    
            public CodeNotesController(IConfiguration configuration, IWebHostEnvironment env)
            {
                Configuration = configuration;
                if (env.IsDevelopment())
                {
                    connStr = Configuration.GetConnectionString("DevConnection");
                }
                else
                {
                    connStr = Configuration.GetConnectionString("ProdConnection");
                }
            }
    
            [HttpGet]
            public async Task CodeActionMethodToConnectToSQLnetCore()
            {
                //add  using System.Data.SqlClient;
                //     using System.Data;
                //Along with the using statements, you need the system assembly reference.
                //To add assembly you can do the following.
                //   install nuget package. Right Click on Project > Manage Nuget Packages > 
                //   Search & install 'System.Data.SqlClient' and make sure it is compatible with the type of project (Core/Standard);
    
                List aListOfItems = new List();
    
                string commandText = @"SELECT * FROM [dbo].[ItemSubmissions] 
                                            WHERE SUBMITTEREMAIL = @SUBMITTEREMAIL 
                                            ORDER BY CreationDatetime DESC";
    
                using (var connection = new SqlConnection(connStr))
                {
                    await connection.OpenAsync();   //vs  connection.Open();
                    using (var tran = connection.BeginTransaction())
                    {
                        using (var command = new SqlCommand(commandText, connection, tran))
                        {
                            try
                            {
                                command.Parameters.Add("@SUBMITTEREMAIL", SqlDbType.NVarChar);
                                command.Parameters["@SUBMITTEREMAIL"].Value = "me@someDomain.org";
    
                                SqlDataReader rdr = await command.ExecuteReaderAsync();  // vs also alternatives, command.ExecuteReader();  or await command.ExecuteNonQueryAsync();
    
                                while (rdr.Read())
                                {
                                    var itemContent = new XtraSimpleContent();
                                    itemContent.UserName = rdr["RCD_SUBMITTERNAME"].ToString();
                                    itemContent.References = rdr["RCD_REFERENCES"].ToString();
                                    itemContent.CreatedTime = rdr["CreationDatetime"].ToString();
    
                                    aListOfItems.Add(itemContent);
                                }
                            await rdr.CloseAsync();
                            }
                            catch (Exception Ex)
                            {
                                await connection.CloseAsync()
                                string msg = Ex.Message.ToString();
                                tran.Rollback();
                                throw;
                            }
                        }
                    }
                }
    
                string totalinfo = string.Empty;
                foreach (var itm in aListOfItems)
                {
                    totalinfo = totalinfo + itm.UserName + itm.References + itm.CreatedTime;
                }
                return Content(totalinfo);
    
            }
        }
    }
    

    Test it with something like:

    https://localhost:44302/CodeNotes/CodeActionMethodToConnectToSQLnetCore

提交回复
热议问题