asp.net core 1.1 entityframework mysql

本人是做JAVA开发的,因为前两天看了一篇文章,知道了.net core的存在,很感兴趣,所以做了一下尝试。

打开visual studio 2017,新建一个.net core

点击运行,你可以看到一个网站模板。

 打开Program.cs,你看到的是这样的:

这个文件是应用的启动文件,

UseKestrel()表示启用了内置的一个中间件"Kestrel",就和eclipse的GlassFish是一个意思,但据说性能比iis高出很多倍。

UseStartup<Startup>() 泛型指定了启动时的项目运行时配置文件,就是Startup.cs文件。

mvc相信大家都已经很熟悉了,就不多说了,我们连接一下数据库,因为我本机安装有mysql所以就自然想去连接,

所以就去NuGet找相关的模块,但都无法安装,后来看了一个文档,说是.net core的连接库没在nuget标准库里。

最后去nuget官网找到了:

http://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/

在nuget控制台下执行这个命令就可以了:Install-Package MySql.Data.EntityFrameworkCore -Pre

然后在项目下新建一个Modles文件夹,用来存放entity

在modles下新建一个类:

public class User {
        [Key]
        public int ID { get; set; }
        public string Name { get; set; }
        public string Email { get; set; }
        public string Bio { get; set; }
    }

在同一个文件中新建一个ef上下文:

public class EFDbContext : DbContext {
        public EFDbContext(DbContextOptions<EFDbContext> options) : base(options) {

        }
        public DbSet<User> User { get; set; }
        
    }

将Stratup.cs文件做如下修改

public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<EFDbContext>(options => options.UseMySQL(Configuration.GetConnectionString("MySQL")));
            // Add framework services.
            services.AddMvc();

        }

这里有一个问题,就是

options.UseMySQL

这里会报错,说UseMySQL方法不存在,这是因为这个方法是在扩展包里的,所以要引入MySQL.Data.EntityFrameworkCore.Extensions命名空间。

这里有个

Configuration.GetConnectionString("MySQL")

的连接配置文件,那我们打开appsettings.json文件,做如下修改:

{
  "ConnectionStrings": {
    "MySQL": "server=localhost;database=template;uid=root;pwd=;charset=utf8;sslmode=none"
  },
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  }
}

在mysql里建一个新库template ,对照着User.cs文件,新建一张表,写点测试数据在里面。

打开Controllers下的HomeControll.cs文件:

public IList<User> UserList() {
            var list = _context.User.ToList();
            return list;
        }

点击运行,

在地址栏里追加地址:/Home/UserList 

以上就是对于这次体验的大概过程,感觉相对于java目前最火的框架springmvc,从完整性和模块独立上来说,两者的差距已经越来越小了,听说2.0版本今年7月左右发布,很有可能会超越后者,另外 .net core相较于.net framework的最大变化,就是能跨平台了,下次再说说怎么把项目发到linux上执行。

原文地址:https://www.cnblogs.com/eclipse-/p/6733555.html