.Net Core全新认识(包括数据库数据库链接等)

.NET 经历14年,在Windows平台上的表现已经相当优秀,但是“跨平台、开源”却是其痛点,从16年开始.NET Core的出现将迎来.NET的真正意义上的跨平台和开源序幕。

.NET Core是一个开源通用的开发框架,支持跨平台,即支持在Window,macOS,Linux等系统上的开发和部署,并且可以在硬件设备,云服务,和嵌入式/物联网方案中进行使用。

.NET Core的源码放在GitHub上,由微软官方和社区共同支持。

首先来讲下.NET Frame­work 和 .NET Core 的分别有什么优势:

.NET Frame­work的优势:

     如果你需要快速开发并部署一个 .NET 应用并且你没有充足的时间去学习 .NET Core,那么 你应该选 .NET Framework。因为 .NET Core有一定的学习曲线。

    如果你要维护并升级现有的 .NET应用程序,那么你应该选择.NET Framework。移植一个现有的.NET程序去.NET Core 框架线面需要一定的工作量。

    为了找一份工作?现在并没有很多的关于.NET Core的职位供你选择。

    .NET Frame­work 就是这样的,现在的版本是.NET Frame­work 4.8,很有可能这是.NET Framework的最后一个版本了。在未来并没有计划有新的.NET Framework版本。

 .NET Core的优势:

    假如你要开发一个新的应用并且有.NET Frame­work 和.NET Core 供你选择,那么应该选.NET Core。

    微软刚刚宣布.NET Core V3.1,这是一个有很大提升的.NET Core版本。.NET Core将是你以后学习并开发一个应用程序时的选择。

    .NET Core 3.1支持已经支持了WPF和Windows Forms。.NET Core 3.1 还支持UWP,WPF和Windows Forms三者的开发。

    如果你要开发一个新的程序并且公司允许的话,那么.NET Core 是你的一个很好的选择。.NET Core 将会变的越来越好。

    .NET Core 很适合跨平台的开发。  .NET Core 应用支持Windows,Linux和Mac OS。微软的很受欢迎的开源文本编辑器 Visu­al Code 支持Windows,Linux和Mac OS。VS Code还支持In­tel­liSense 和 debugging,就像Sublime, Emacs, and VI, work w那样 。

   .NET Core 也是支持微服务的,它支持跨平台的服务与.NET Core 一起工作,即使这写服务是.NET Frame­work, Java, Ruby,等等,开发的。

   容器就是现在的虚拟机。.NET核心的模块化、重量轻和灵活性使它更容易在容器中部署.NET核心应用程序。容器可以部署在任何平台、云、Linux和Windows上。.NET核心与Docker和Azure Kubernetes服务都很好地工作。

目前而言,.Net Framework是非常方便的平台,.Net Core的方便度尚不如.Net Framework。但是.Net Core的免费和跨平台特性,满足了很多小型面向业务型开发的公司的需求,是非常好的Java的替代品。

下面来讲讲.Net Core链接不同的数据库方法:

.Net Core使用过的人就会发现,跟.Net EF还是有很大的区别的。但是彼此都支持NuGet。这里我主要讲.Net Core Mvc使用Dapper链接SQL、Mysql数据库(仅作为参考例子,新建.Net Core MVC项目我就不多赘述了,创建.Net Core Web程序就可以了,网上也有很多教程)。

之前.Net EF创建项目时会有web.config等配置文件,然而.Net Core就不存在这种文件了,这里我的数据库链接字段配置在appsettings.json文件中:

  "ConnectionStrings": {
    "DefaultConnection": "数据库链接字符串"
  }

然后点击NuGet安装Dpper包、MySql.Data、System.Data.SqlClient

安装完成后创建BaseRepository.cs方法类:

  public class BaseRepository : IDisposable
    {

        public static IConfigurationRoot Configuration { get; set; }

        public static MySqlConnection conn;

        /*Mysql方法*/
        public static MySqlConnection GetMySqlConnection(bool open = true,
            bool convertZeroDatetime = false, bool allowZeroDatetime = false)
        {
            var builder = new ConfigurationBuilder()
            .SetBasePath(Directory.GetCurrentDirectory())
            .AddJsonFile("appsettings.json")
            .Build();
            var cs = builder.GetSection("ConnectionStrings:DefaultConnection").Value;
            var csb = new MySqlConnectionStringBuilder(cs)
            {
                AllowZeroDateTime = allowZeroDatetime,
                ConvertZeroDateTime = convertZeroDatetime
            };
            conn = new MySqlConnection(csb.ConnectionString);
            return conn;
        }

         /*SQL方法*/
        public static SqlConnection SqlConnection()
        {
            var builder = new ConfigurationBuilder()
           .SetBasePath(Directory.GetCurrentDirectory())
           .AddJsonFile("appsettings.json")
           .Build();
            string mysqlConnectionStr = builder.GetSection("ConnectionStrings:DefaultConnection").Value;
            var connection = new SqlConnection(mysqlConnectionStr);
            connection.Open();
            return connection;
        }
        public void Dispose()
        {
            if (conn != null && conn.State != System.Data.ConnectionState.Closed)
            {
                conn.Close();
            }
        }
    }

到这一步,数据库链接就完成了,接下来就在控制器方法中编写相应逻辑。

 public IActionResult Dapper(UserInfoModel  userInfo) 
        {
            try
            { 
            /*我这里用的是sql方法,如果是mysql数据库则用mysql方法*/              
                using (IDbConnection conn = g.BaseRepository.SqlConnection())
                {
                 List<UserInfoModel> userInfos=conn.Query<UserInfoModel>
("select gid as Id,name as UserName from [User] ").ToList();
                }
                return Json("success"); 
            }
            catch(Exception e) 
            { 
                return Json("failed"); 
            }
        }

至此,一个小的查询就完成了,其他的逻辑操作参照dapper官方文档即可。

总之一句话 ,就好比装修,Framework 相当于已经装修好的成品房,Net Core 相当于毛坯房 要怎么装修还得看房子的主人要怎么用

为您推荐

发表评论

您的电子邮箱地址不会被公开。