在开始学习代码之前我们需要用到 sql server数据库。如果没有的话,我们可以使用 docker 来安装 Sql server,我们将密码改成了malema987%^&后续的数据库连接都是用这个密码
首先我们要用Visual studio 创建三个项目,一个consoleAPP,一个是Data (类库项目) ,还有一个Migration(类库项目)
下面我们会选择powershell 并使用 dotnet 命令行的方式来做这个事件。
在一个合适的位置创建一个文件夹叫 EFCore-Example 进入到文件夹,按住 Shitf
右键 选择 在此处打开Powershell窗口
dotnet new sln # 创建一个空的解决方案
mkdir Data # 创建一个Data文件夹
cd Data # 进入 Data文件夹
dotnet new classlib #创建类库 项目
cd ../ # 返回到上一级目录
mkdir Migration # 创建一个Migration文件夹
cd Migration # 进入 Migration文件夹
dotnet new classlib #创建一个类库
cd ../ # 返回到上一级目录
mkdir ConsoleApp # 创建一个consoleApp文件夹
cd ConsoleApp #进入 ConsoleApp文件夹
dotnet new console # 创建一个console控制台应用
cd ../ #回到上一级目录(我们项目所在的位置)
dotnet add ./ConsoleApp/ConsoleApp.csproj reference ./Data/Data.csproj #把data.csproj 添加 ConsoleApp
dotnet add ./Migration/Migration.csproj reference ./Data/Data.csproj
dotnet sln add ./ConsoleApp/ConsoleApp.csproj
dotnet sln add ./Data/Data.csproj
dotnet sln add ./Migration/Migration.csproj
这个时候我们可以双击EFCore-Example.sln,如果有安装Visual studio的话,我们就可能看到如下图的项目结构
并按上一节介绍的方式安装上必要的包。 也可以继续使用 dotnet命令行来完成添加必要的引用包。
dotnet add ./Data/Data.csproj package Microsoft.EntityFrameworkCore.SqlServer #切换到data目录下,可以不用在指定项目文件
dotnet add ./Migration/Migration.csproj package Microsoft.EntityFrameworkCore.Tools
安装之后我们就可以看到如下的效果了
我们在data项目里面添加两个新的文件如下
namespace Data
{
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
}
}
Student这个类呢,对应到数据库就是Students表 有两个字段。Id是主键。
using Microsoft.EntityFrameworkCore;
namespace Data
{
public class MalemaDbContext : DbContext
{
public MalemaDbContext() : base()
{
this.Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connectionString = "Data Source=127.0.0.1;Initial Catalog=MalemaEFCoreExample;Persist Security Info=True;User Id=sa;Password=malema987%^&";
optionsBuilder.UseSqlServer(connectionString);
}
public DbSet<Student> Students { get; set; }
}
}
DbContext的详细介绍可以看下一篇
using Data;
using Microsoft.EntityFrameworkCore;
using System.Linq;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
//添加一条新的记录
using (var dbContext = new MalemaDbContext())
{
dbContext.Students.Add(new Student() { Name = "abc" });
dbContext.SaveChanges();
}
//查询出Id为1的记录
using (var dbContext = new MalemaDbContext())
{
var student = dbContext.Students.FirstOrDefault(x => x.Id == 1);
}
}
}
}
是不是蛮简单和方便的。 完整的代码可以在 https://gitee.com/malema/Examples/tree/first_demo/EFCore-Example 这边看到
可以用下面的git命令把代码签出到本地
git clone https://gitee.com/malema/Examples
git checkout first_demo
migration这个项目没有用到? 这个是用来做数据库迁移更新用的。我们后面会介绍到。
备注:我们.net core 版本是5.0