所在的位置: mysql >> mysql发展 >> EFCore20使用MsSqlMy

EFCore20使用MsSqlMy

环境

VisualStudio

最新版本的.NETCore2.0SDK

最新版本的WindowsPowerShell

开始搭建

1、在VisualStudio中创建新项目

“文件”“新建”“项目”

从左侧菜单中选择“已安装”“模板”“VisualC#”“.NETCore”。

选择“ASP.NETCoreWeb应用程序”。

输入“EFGetStarted.AspNetCore.NewDb”作为名称,然后单击“确定”。

在“新建ASP.NETCoreWeb应用程序”对话框中:

确保在下拉列表中选择“.NETCore”和“ASP.NETCore2.0”选项

选择“Web应用程序(模型视图控制器)”项目模板

确保将“身份验证”设置为“无身份验证”

单击“确定”

2、安装EntityFrameworkCore

工具”“NuGet包管理器”“包管理器控制台”

1.1、安装数据库提供程序

MsSql

运行:Install-PackageMicrosoft.EntityFrameworkCore.SqlServer

MySql

运行:柚子:Install-PackagePomelo.EntityFrameworkCore.MySql或者官方:Install-PackageMySql.Data.EntityFrameworkCore-Version8.0.11

1.2、安装程序包管理器控制台运行:Install-PackageMicrosoft.EntityFrameworkCore.Tools

1.3、安装设计包运行:Install-PackageMicrosoft.EntityFrameworkCore.Design

数据据库提供程序设计包  (EFCore2.0不再需要)MsSql

运行:Install-PackageMicrosoft.EntityFrameworkCore.SqlServer.DesignMySql

运行:Install-PackagePomelo.EntityFrameworkCore.MySql.Design

DBFirst——从现有数据库创建模型

MySql

运行:Scaffold-DbContext-Connection"Server=localhost;UserId=root;Password=;Database=vanfj"-Provider"Pomelo.EntityFrameworkCore.MySql"-OutputDir"Models"

MsSql

运行:Scaffold-DbContext-Connection"Server=localhost;UserId=root;Password=;Database=vanfj"-Provider"Microsoft.EntityFrameworkCore.SqlServer"-OutputDir"Models"

使用说明:将Connection中的连接字符串替换为自己的数据库连接,将OutputDir中的Models替换为自己要生成的文件目录名

CodeFirst——从模型生成到数据库

1、创建模型

1.1、创建上下文

publicclassSchoolContext:DbContext

{

publicSchoolContext(DbContextOptionsSchoolContextoptions):base(options)

{

}

publicDbSetCourseCourses{get;set;}

publicDbSetEnrollmentEnrollments{get;set;}

publicDbSetStudentStudents{get;set;}

protectedoverridevoidOnModelCreating(ModelBuildermodelBuilder)

{

modelBuilder.EntityCourse().ToTable("Course");

modelBuilder.EntityEnrollment().ToTable("Enrollment");

modelBuilder.EntityStudent().ToTable("Student");

}

}

publicclassStudent

{

publicintID{get;set;}

publicstringLastName{get;set;}

publicstringFirstMidName{get;set;}

publicDateTimeEnrollmentDate{get;set;}

publicICollectionEnrollmentEnrollments{get;set;}

}

publicenumGrade

{

A,B,C,D,F

}

publicclassEnrollment

{

publicintEnrollmentID{get;set;}

publicintCourseID{get;set;}

publicintStudentID{get;set;}

publicGrade?Grade{get;set;}

publicCourseCourse{get;set;}

publicStudentStudent{get;set;}

}

{

A,B,C,D,F

}

publicclassEnrollment

{

publicintEnrollmentID{get;set;}

publicintCourseID{get;set;}

publicintStudentID{get;set;}

publicGrade?Grade{get;set;}

publicCourseCourse{get;set;}

publicStudentStudent{get;set;}

}

publicclassCourse

{

[DatabaseGenerated(DatabaseGeneratedOption.None)]

publicintCourseID{get;set;}

publicstringTitle{get;set;}

publicintCredits{get;set;}

publicICollectionEnrollmentEnrollments{get;set;}

}

1.2、Startup文件注入上下文

EFCore在版本2.0中,引入了一种在依赖关系注入中注册自定义DbContext类型的新方法,即以透明形式引入可重用DbContext实例的池。要使用DbContext池,请在服务注册期间使用AddDbContextPool而不是AddDbContext

publicvoidConfigureServices(IServiceCollectionservices)

{

services.AddDbContextPoolSchoolContext(options=

options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));

services.AddMvc().AddJsonOptions(options=

options.SerializerSettings.ReferenceLoopHandling=Newtonsoft.Json.ReferenceLoopHandling.Ignore);

}

1.3、appsettings.json文件添加连接字符串

{

"ConnectionStrings":{

"DefaultConnection":"Server=localhost;UserId=root;Password=;Database=vanfj"

},

"Logging":{

"IncludeScopes":false,

"LogLevel":{

"Default":"Warning"

}

}

}

2、执行NuGet命令,创建数据库

2.1、为迁移搭建基架

运行:Add-MigrationInitialCreate

2.2、将新迁移应用到数据库

运行:Update-Database

EFCore2.0NuGet命令

Get-Helpabout_EntityFrameworkCore获取EFCore命令帮助

添加一个迁移数据库迁移的名称目录(及其子命名空间)路径是相对于项目目录。默认值为"Migrations"。Add-Migration-NameString-OutputDirString  Add-MigrationInitialCreate第一次执行初始化用这个

删除上次的迁移数据库不检查以查看迁移是否已应用到数据库。Remove-Migration-Force

目标迁移。如果为"0",将恢复所有迁移。默认到最后一个迁移。Update-DatabaseUpdate-DatabaseLastGoodMigration还原迁移

删除数据库显示的数据库会被丢弃,但没有删除它Drop-Database-WhatIf

Get-DbContext获取有关DbContext类型的信息

从数据库更新DbContext和实体的类型Scaffold-DbContext-ConnectionString  数据库的连接字符串。-ProviderString  要使用的提供程序。(例如Microsoft.EntityFrameworkCore.SqlServer)-OutputDirString  要将文件放入的目录。路径是相对于项目目录。--ContextString  若要生成的dbcontext名称。-SchemasString[]  要生成实体类型的表架构。-TablesString[]  要生成实体类型的表。-DataAnnotations  使用属性来配置该模型(如果可能)。如果省略,则使用仅fluentAPI。-UseDatabaseNames  使用直接从数据库表和列名称。-Force覆盖现有文件。

从迁移中生成的SQL脚本Script-Migration-FromString  开始迁移。默认值为0(初始数据库)-ToString  结束的迁移。默认到最后一个迁移-Idempotent  生成可以在任何迁移的数据库使用的脚本-OutputString  要将结果写入的文件

原文


转载请注明:http://www.aierlanlan.com/tzrz/832.html

  • 上一篇文章:
  •   
  • 下一篇文章: