Entity Framework Core(EF Core) 最简单的入门示例
概述
Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
EF Core 可用作对象关系映射程序 (O/RM),以便于 .NET 开发人员能够使用 .NET 对象来处理数据库,这样就不必经常编写大部分数据访问代码了。
EF Core 支持多个数据库引擎,请参阅数据库提供程序了解详细信息。
基于 .NET Core 的 EF Core 入门
在本教程中,将创建一个 .NET Core 控制台应用,该应用使用 Entity Framework Core 对 Microsoft SQL Server 数据库执行数据访问。
创建新项目
新建控制台项目:
执行 PowerShell 命令
dotnet new console -o ConsoleApp
如下图
更改当前目录
将当前目录更改为应用程序的目录,如下所示:
cd ConsoleApp
安装 Entity Framework Core
安装 Microsoft.EntityFrameworkCore.SqlServer 和 Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
运行
dotnet restore
来安装新的程序包。
创建模型
使用以下内容创建一个新的 Model.cs 文件。
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic; namespace ConsoleApp
{
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=你的数据库地址;Database=ConsoleApp;User Id=你的数据库账号;Password=你的数据库密码;");
}
} public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; } public ICollection<Post> Posts { get; set; }
} public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; } public int BlogId { get; set; }
public Blog Blog { get; set; }
}
}
在实际应用程序中,应将每个类放在单独的文件中,并将连接字符串放在配置文件或环境变量中。 为简化本教程,所有内容均放在一个文件中。
创建数据库
有了模型后,即可通过迁移创建数据库。
- 运行
dotnet ef migrations add InitialCreate
以为迁移搭建基架,并为模型创建一组初始表。 - 运行
dotnet ef database update
以将新迁移应用到数据库。 在应用迁移之前,此命令可创建数据库。
使用模型
打开 Program.cs 并将内容替换为以下代码:
using System; namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
using (var db = new BloggingContext())
{
db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
var count = db.SaveChanges();
Console.WriteLine("{0} records saved to database", count); Console.WriteLine();
Console.WriteLine("All blogs in database:");
foreach (var blog in db.Blogs)
{
Console.WriteLine(" - {0}", blog.Url);
}
}
}
}
}
运行
dotnet run
从控制台测试应用。
基于 ASP.NET Core 的 EF Core 入门
在本教程中,将使用 Entity Framework Core 构建执行基本数据访问的 ASP.NET Core MVC 应用程序。
创建新项目
打开 Visual Studio 2017
“文件”>“新建”>“项目”
从左菜单中选择“已安装”>“Visual C#”>“.NET Core”。
选择“ASP.NET Core Web 应用程序”。
输入“WebApplication”作为名称,然后单击“确定”。
在“新建 ASP.NET Core Web 应用程序”对话框中:
确保在下拉列表中选择“.NET Core”和“ASP.NET Core 2.1”
选择“Web 应用程序(模型视图控制器)”项目模板
确保将“身份验证”设置为“无身份验证”
单击“确定”
安装 Entity Framework Core
对于本教程,无需安装提供程序包,因为本教程使用 SQL Server。 SQL Server 提供程序包包含在 Microsoft.AspnetCore.App 元包中。
创建模型
右键单击“Models”文件夹,然后选择“添加”>“类”。
输入“Model.cs”作为名称,然后单击“确定”。
将此文件的内容替换为以下代码:
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore; namespace WebApplication.Models
{
public class BloggingContext : DbContext
{
public BloggingContext(DbContextOptions<BloggingContext> options)
: base(options)
{ } public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
} public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; } public ICollection<Post> Posts { get; set; }
} public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; } public int BlogId { get; set; }
public Blog Blog { get; set; }
}
}
生产应用通常会将每个类放在单独的文件中。 为简单起见,本教程将这些类放在一个文件中。
使用依赖注入注册上下文
若要使 BloggingContext
可用于 MVC 控制器,请在 Startup.cs
中将其注册为服务。
在应用程序启动过程中,通过依赖关系注入 注册服务(如 BloggingContext),以便能够通过构造函数的参数和属性向使用服务的组件(如 MVC 控制器)自动提供该服务。
在 Startup.cs 中,添加以下 using 语句:
using WebApplication.Models;
using Microsoft.EntityFrameworkCore;
将以下
手动高亮
的代码添加到ConfigureServices
方法:public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
}); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); var connection = @"Server=你的数据库地址;Database=WebApplication;User Id=你的数据库账号;Password=你的数据库密码;"; // 手动高亮
services.AddDbContext<BloggingContext> // 手动高亮
(options => options.UseSqlServer(connection)); // 手动高亮
}
生产应用通常会将连接字符串放在配置文件或环境变量中。 为简单起见,本教程在代码中定义它。
创建数据库
以下步骤使用迁移创建数据库。
“工具”>“NuGet 包管理器”>“包管理器控制台”
运行以下命令:
Add-Migration InitialCreate
Update-Database
如果收到错误,指出 The term 'add-migration' is not recognized as the name of a cmdlet,请关闭并重新打开 Visual Studio。
Add-Migration 命令为迁移搭建基架,以便为模型创建一组初始表。 Update-Database 命令创建数据库并向其应用新的迁移。
创建控制器
生成 Blog 实体控制器和视图的基架。
在“解决方案资源管理器”中,右键单击“Controllers”文件夹,然后选择“添加”>“控制器”。
选择“视图使用 Entity Framework 的 MVC 控制器”,然后单击“添加”。
将“模型类”设置为“Blog”,将“数据上下文类”设置为“BloggingContext”。
单击 添加。
运行此应用程序
- 调试 > 开始执行(不调试)
- 导航到 /Blogs
Entity Framework Core(EF Core) 最简单的入门示例的更多相关文章
- .net core Entity Framework 与 EF Core
重点讲 Entity Framework Core ! (一)Entity Framework 它是适用于.NET 的对象关系映射程序 (ORM),现在的EF6已经是久经沙场,并经历重重磨难,获得一致 ...
- .net core EF Core 视图的应用
由之前的一篇文章<.net core Entity Framework 与 EF Core>我们都已经知道 EF Core 增加了许多特性,并且性能上也有了很大的提升. 但是EF Core ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- asp.net core+ef core
asp.net core+ef core 官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一 ...
- Entity FrameWork(实体框架)是以ADO.NET Entity FrameWork ,简称为EF
Entity FrameWork(实体框架)是以ADO.NET Entity FrameWork ,简称为EF Entity FrameWork的特点 1.支持多种数据库(MSSQL.Oracle.M ...
- Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)
Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...
- .net core EF Core 调用存储过程
在这里,我们将尝试去学习一下 .net core EF Core 中调用存储过程. 我们知道,EF Core 是不支持直接调用存储过程的,那它又提供了什么样的方式去执行存储过程呢?有如下方法: 1.F ...
- 在vs2015上使用asp.net core+ef core
官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一下实现的效果
- .Net Core EF Core之Sqlite使用及部署
1.添加引用Nuget包 Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Design Microsoft.Ent ...
随机推荐
- Docke--Dockerfile指令介绍
Dockerfile 构建镜像常用指令 Dockerfile 是一个文本文件,其内包含了一条条的指定(Instruction),每一条指令构建一层,因此每一条指定的内容,就是描述该层应当如何构建. 通 ...
- 关于docker的基础教程
对于docker来说,详细参考如下博客 http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html
- windows下连接smb服务器
在运行里面输入:\\xxx.xxx.xxx.xxx 即可访问远程服务器
- 条件随机场(conditional random field,CRF)模型初探
0. 引言 0x1:为什么会有条件随机场?它解决了什么问题? 在开始学习CRF条件随机场之前,我们需要先了解一下这个算法的来龙去脉,它是在什么情况下被提出的,是从哪个算法演进而来的,它又解决了哪些问题 ...
- 快速掌握Nginx(二) —— Nginx的Location和Rewrite
1 location详解 1.location匹配规则 Nginx中location的作用是根据Url来决定怎么处理用户请求(转发请求给其他服务器处理或者查找本地文件进行处理).location支持正 ...
- 如何解决Java警告信息:"objc[31336]: Class JavaLaunchHelper is implemented in both places ..."
在macOS High Sierra Version 10.13.6下使用Intellij在Java 8上执行Java程序,console中会打印如下警告信息: objc[31336]: Class ...
- Java虚拟机内存溢出异常--《深入理解Java虚拟机》学习笔记及个人理解(三)
Java虚拟机内存溢出异常--<深入理解Java虚拟机>学习笔记及个人理解(三) 书上P39 1. 堆内存溢出 不断地创建对象, 而且保证创建的这些对象不会被回收即可(让GC Root可达 ...
- 使用Docker+Jenkins自动构建部署
环境 Windows 10 Docker Version 18.06.1-ce-win73 (19507) 运行jenkins 运行jenkins 容器 docker run -d --name ln ...
- This is very likely to create a memory leak 异常
原因: 内存分配不够 解决办法:tomcat目录下,修改bin/catalina.sh文件,添加以下语句: JAVA_OPTS="-server -Xms768m -Xmx768m -XX: ...
- python之描述符
描述符是将某种特殊类型的类实例指派给另一个类的属性,某种特殊类型的类就是这个类里面封装了get,set,delete这三个方法,可以将这个类指派给另一个类的某一个属性,这样就可以通过这三个方法对该属性 ...