EF Core 第一个完整的例子

在开始学习代码之前我们需要用到 sql server数据库。如果没有的话,我们可以使用 docker 来安装 Sql server,我们将密码改成了malema987%^&后续的数据库连接都是用这个密码

使用Dotnet命令行创建 项目和解决方案

首先我们要用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

安装之后我们就可以看到如下的效果了

添加一个DbContext和一个Student 实体类

我们在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的详细介绍可以看下一篇

使用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

上一篇:安装 EF core
最近更新的
...