Asp.net Core 通过 Ef Core 访问、管理Mysql

时间:2023-03-09 03:52:56
Asp.net Core 通过 Ef Core 访问、管理Mysql

本文地址:http://www.cnblogs.com/likeli/p/5910524.html

环境

dotnet Core版本:1.0.0-preview2-003131

本文分为Window环境和Mac Os X环境。


相关资源下载

Visual Studio Code:https://code.visualstudio.com

DotNet Core:https://dotnet.github.io/

MySql.Data.EntityFrameworkCore:http://www.nuget.org/packages/MySql.Data.EntityFrameworkCore/7.0.5-IR21

Entity Framework Core(Pomelo):https://docs.efproject.net/en/latest/providers/pomelo/index.html#supported-database-engines

Entity Framework Core(Official):https://docs.efproject.net/en/latest/providers/mysql/

MySql数据库

安装配置就不介绍了,不是本文重点,本文中,Mac下用的Mysql是通过brew包管理器直接安装的。

登录数据库检查目前数据库的内容情况

Asp.net Core 通过 Ef Core 访问、管理Mysql

OS X环境

安装DotNet Core SDK包和Visual Studio Code安装包,上面的资源里面有了,若是不知道如何配置,请看我另两篇的文章,里面做了介绍:http://www.cnblogs.com/likeli/p/5883551.htmlhttp://www.cnblogs.com/likeli/p/5910475.html

创建Web项目

在准备的项目目录下执行命令,进行创建:

dotnet new -t web

Asp.net Core 通过 Ef Core 访问、管理Mysql

Visual Studio Code 打开,安装好了C#插件后,可以着色、提示等。

导入Mysql驱动包

打开游览器,去NuGet逛逛,搜索mysql官方出的驱动包 MySql.Data.EntityFrameworkCore

Asp.net Core 通过 Ef Core 访问、管理Mysql

可以看到上面的库名 MySql.Data.EntityFrameworkCore, 还有版本号 7.0.5-IR21

打开项目中的project.json,在该文件中加入mysql驱动包的名字,还有版本号。

Asp.net Core 通过 Ef Core 访问、管理Mysql

然后在终端中键入命令,通过Nuget回复所有的依赖包:

dotbet restore

Asp.net Core 通过 Ef Core 访问、管理Mysql

增加实体和上下文

在项目的Models文件夹下创建新的.cs文件,加入User.csBlog.cs

代码如下:

User.cs

namespace WebApplication.Models
{
public class User
{
public int UserId { set; get; }
public string Name{set;get;}
}
}

Blog.cs

namespace WebApplication.Models{
public class Blog{
public int Id{set;get;}
public string Title{set;get;}
public string Content{set;get;} public int UserId{set;get;}
public virtual User User{set;get;}
}
}

在Data文件夹下添加上下文:

DataContext.cs

using Microsoft.EntityFrameworkCore;
using MySQL.Data.EntityFrameworkCore.Extensions;
using WebApplication.Models; namespace WebApplication.Data{
public class DataContext : DbContext{
public DbSet<User> Users{set;get;} public DbSet<Blog> Blogs{set;get;} protected override void OnConfiguring( DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseMySQL(@"Server=localhost;database=ef;uid=root;pwd=root");
}
}

有过Ef使用经验的开发者应该很容易懂这个过程了,其实需要说明一下的就是在非Visual Studio中开发,不能直接使用NuGet的命令的时候,就直接在project.json里面添加需要引用的包,然后执行dotnet restore还原包就可以了。

然后在Home控制器里面写调用代码:

using(var context = new DataContext()){
context.Database.EnsureCreated();
var user = new User {Name="愤怒的TryCatch"};
context.Add(user); context.SaveChanges();
}

编译测试

在终端键入 dotnet build 命令进行编译,然后'dotnet run'运行。

Asp.net Core 通过 Ef Core 访问、管理Mysql

Asp.net Core 通过 Ef Core 访问、管理Mysql

查看一下数据库里面的变化:

Asp.net Core 通过 Ef Core 访问、管理Mysql

可以看到MySQL数据里面多出了一个名叫Ef的库

Asp.net Core 通过 Ef Core 访问、管理Mysql

表结构也已经建立,User表中已经添加了新数据。

现在加上Blog的数据,这里表现外键关系。

Asp.net Core 通过 Ef Core 访问、管理Mysql

Asp.net Core 通过 Ef Core 访问、管理Mysql

发现外键关系也有了。

总结 目前看来,Ef Core 的使用方法和Windows上的EF差别并不大,但是目前只是早期版本,版本应该还会快速迭代,用于生产环节,那就得请三思了。

本文是在Mac上做了了Ef Core的操作演示,我也在Windows上测试过了,编写方法和方式都是一样的。各位类推一下就可以了。