菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

.net core EF codefirst

4944人阅读 2021/5/31 17:40 总访问:1019268 评论:0 收藏:3 手机
分类: .net core

前言

操作方法与Framework类似,使用前先下载EF依赖包

Install-Package Microsoft.EntityFrameworkCore.SqlServer -version 3.1.1

先定义数据表的类

  1.    //例如有一张学生表
  2.    public class Student
  3.     {
  4.         public int ID { getset; }
  5.         public string LastName { getset; }
  6.         public string FirstMidName { getset; }
  7.         public DateTime EnrollmentDate { getset; }
  8.         public ICollection<Enrollment> Enrollments { getset; }
  9.     }

在创建上下文对象的类

此类需要继承 Microsoft.EntityFrameworkCore.DbContext 类

  1.  public class SchoolContext : DbContext
  2.     {
  3.         public SchoolContext(DbContextOptions<SchoolContext> options) : base(options)
  4.         {
  5.         }
  6.         //上下文对象的类名就是数据库的名称
  7.         //添加数据表Students为创建的表名
  8.         public DbSet<Student> Students { getset; }
  9.     }

提供创建数据库的类

  1.    public static class DbInitializer
  2.     {
  3.         public static void Initialize(SchoolContext context)
  4.         {
  5.         //创建数据库,返回布尔值
  6.           var isscuess = context.Database.EnsureCreated();
  7.                 }
  8.         }

启动文件中调用创建数据库的方法

  1. //main函数中调用创建数据库
  2.  public static void Main(string[] args)
  3.         {
  4.             //CreateHostBuilder(args).Build().Run();
  5.             var host = CreateHostBuilder(args).Build();
  6.             CreateDbIfNotExists(host);
  7.             host.Run();
  8.         }
  9.  //如果数据库不存在就创建的方法
  10.  private static void CreateDbIfNotExists(IHost host)
  11.         {
  12.             using (var scope = host.Services.CreateScope())
  13.             {
  14.                 var services = scope.ServiceProvider;
  15.                 var context = services.GetRequiredService<SchoolContext>();
  16.                 DbInitializer.Initialize(context);
  17.             }
  18.         }

配置文件appsettings.json中配置连接数据库的字符串

  1. "ConnectionStrings": {
  2.     "SchoolContext""Server=.;Database=SchoolContext;uid=sa;password=123456"
  3.   },

现在数据库已经创建好了,现在我们来添加数据,添加数据与Framework几乎一模一样

首先添加上下文的依赖,GetConectionString中的参数是配置文件中的参数

  1. services.AddDbContext<SchoolContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SchoolContext")));

在控制器中添加依赖注入,构造函数添加

  1. //定义一个私有只读的实例
  2.  private readonly SchoolContext schoolContext;
  3.  
  4.  //构造函数注入
  5.   public HomeController(SchoolContext _schoolContext)
  6.         {
  7.             schoolContext = _schoolContext;
  8.         }

注入完成过后,往数据库添加数据

  1. //定义一个数组
  2.   var students = new Student[]
  3.             {
  4.                 new Student{FirstMidName="Carson",LastName="Alexander",EnrollmentDate=DateTime.Parse("2005-09-01")},
  5.                 new Student{FirstMidName="Meredith",LastName="Alonso",EnrollmentDate=DateTime.Parse("2002-09-01")},
  6.                 new Student{FirstMidName="Arturo",LastName="Anand",EnrollmentDate=DateTime.Parse("2003-09-01")},
  7.                 new Student{FirstMidName="Gytis",LastName="Barzdukas",EnrollmentDate=DateTime.Parse("2002-09-01")},
  8.                 new Student{FirstMidName="Yan",LastName="Li",EnrollmentDate=DateTime.Parse("2002-09-01")},
  9.                 new Student{FirstMidName="Peggy",LastName="Justice",EnrollmentDate=DateTime.Parse("2001-09-01")},
  10.                 new Student{FirstMidName="Laura",LastName="Norman",EnrollmentDate=DateTime.Parse("2003-09-01")},
  11.                 new Student{FirstMidName="Nino",LastName="Olivetto",EnrollmentDate=DateTime.Parse("2005-09-01")}
  12.             };
  13.             //写入数据缓冲区
  14.             foreach (Student s in students)
  15.             {
  16.                 schoolContext .Students.Add(s);
  17.             }
  18.             //真正的写入数据库
  19.             schoolContext .SaveChanges();

数据库显示

从数据库读数据,方法与Framework一样

  1.  var name = schoolContext.Students.Where(a => a.ID == 5).Select(a => a.FirstMidName).FirstOrDefault();

评价

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

.net mvc分部页,.net core分部页

.net分部页的三种方式第一种:@Html.Partial(&quot;_分部页&quot;)第二种:@{ Html.RenderPartial(&quot;分部页&quot;);}...

StackExchange.Redis操作redis(net core支持)

官方git开源地址https://github.com/StackExchange/StackExchange.Redis官方文档在docs里边都是官方的文档通过nuget命令下...

.net core 使用session

tip:net core 2.2后可以直接启用session了,不用在自己添加一次session依赖,本身就添加了使用nuget添加引用Microsoft.AspN...

通俗易懂,什么是.net?什么是.net Framework?什么是.net core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

asp.net core2.0 依赖注入 AddTransient与AddScoped的区别

asp.net core主要提供了三种依赖注入的方式其中AddTransient与AddSingleton比较好区别AddTransient瞬时模式:每次都获取一...

.net core 使用 Kestrel

Kestrel介绍 Kestrel是一个基于libuv的跨平台web服务器 在.net core项目中就可以不一定要发布在iis下面了Kestrel体验可以使...

net core中使用cookie

net core中可以使用传统的cookie也可以使用加密的cookieNET CORE中使用传统cookie设置:HttpContext.Response.Cookies.Appe...

net core项目结构简单分析

一:wwwrootwwwroot用于存放网站的静态资源,例如css,js,图片与相关的前端插件等lib主要是第三方的插件,例如微软默认引用...

net core使用EF之DB First

一.新建一个.net core的MVC项目新建好项目后,不能像以前一样直接在新建项中添加ef了,需要用命令在添加ef的依赖二.使用Nug...

.net core使用requestresponse下载文件下载excel等

使用request获取内容net core中request没有直接的索引方法,需要点里边的Query,或者formstringbase64=Request.Form[&quot;f...

iframe自适应高度与配合net core使用

去掉iframe边框frameborder=&quot;0&quot;去掉滚动条scrolling=&quot;no&quot;iframe 自适应高度如果内容是固定的,那么就...

net core启动报错Unable to configure HTTPS endpoint. No server certificate was specified

这是因为net core2.1默认使用的https,如果使用Kestrel web服务器的话没有安装证书就会报这个错其实仔细看他的错误提示,其...

net core中使用url编码与解码操作

net core中暂时还没有以前asp.net与mvc中的server对象。获取url的编码与解码操作不能使用以前的server对象来获取。使用的是...

下载net core

官方下载地址:https://dotnet.microsoft.com/download 进来之后就可以看到最新的下载版本可以直接点击下载,也可以下载其...