// 创建MvcWEB项目
创建Models Controllers Views文件夹 已有的不需添加
// 1. 安装相关Nuget包
// a. Install - Package Microsoft.EntityForameWorkCore
// b . Sql Server Database Provider
// Install - Package Microsoft.EntityFrameworkCore.SqlServer
下面开始会有两种方式 创建 一种在添加控制器的时候自动生成,另一种自己设置生成配置及连接字符串
第一种:
1 .在Models文件夹中添加MyDBContext.cs 上下文类
附代码:
public class MyDBContext:DbContext
{
public DbSet Books { get; set; }
public DbSet Authers { get; set; }
public MyDBContext(DbContextOptions options):base(options) {
}
//重写OnConfiguring方法,配置数据库连接(可选)
//protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
//{
// optionsBuilder.UseSqlServer(@"Server=.;Database=BooksDB ;Trusted_Connection=True;");
//}
}
public class Book {
public int BookID { get; set; }
public int AutherID { get; set; }
public string Name { get; set; }
public DateTime DateTime { get; set; }
public string Content { get; set; }
public Auther Auther { get; set; }
}
2 .在Startup.cs文件中注册添加上下文:
public void ConfigureServices(IServiceCollection services)
{
services.Configure(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_2);
//dotnet add package Microsoft.EntityFrameworkCore.SqlServer (--version 2.2.4 可省略)
var a = Configuration["Message"];
var b = Configuration.GetConnectionString("Person:name");
var c = Configuration.GetSection("Logging");
// 下面为添加注册连接服务
services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultStr")));
}
3. 配置sppsettings.json文件的连接字符串
localdb的自带数据库
"ConnectionStrings": {
"StudyCoreMvcContext": "Server=(localdb)\\mssqllocaldb;Database=StudyCoreMvcContext-ef441ba8-6874-4567-a570-89a7afbb147a;Trusted_Connection=True;MultipleActiveResultSets=true"
}
SQLserver连接
"ConnectionStrings": {
"DefaultStr": "Server=.;Database=BooksDB;Trusted_Connection=True;"
}
4 . 进行数据迁移:Migration
打开 VS 工具 - > NuGet软件包管理器 - >软件包管理器控制台
创建模型的初始表 :输入命令 或者使用NuGet视图安装
Add-Migration InitialCreate
将新迁移应用于数据库
Update-Database
系统会自动创建Migration 文件夹
或者使用 dotnet CLI 工具命令创建
在vs中右键项目-》在资源管理器中打开文件-》点击src路径文件夹-》找到对应的项目文件夹-》按住键盘Shift+鼠标右键项目文件夹-》选择在此处打开命令窗口,然后分别输入如下命令:
dotnet ef migrations add Initial
dotnet ef database update
注意: 创建名称不同的多个DBContext时候需要添加如下参数 cmd 命令行执行dotnet ef migrations add Initial -c DemoDbContext
如在原命令后加上代码-c DbContext的文件名,如下
执行命令生成创建的文件
dotnet ef migrations add Initial -c DemoDbContext
执行命令生成数据库
dotnet ef database update -c DemoDbContext
NuGet可视化视图界面安装会出现搜不到任务包资源 请注意更换源地址设置
1.先检查vs2017Nuget中搜索看是否能搜索到EntityFrameWorkCore 搜索不到就需要配置Nuget数据源
地址:https://api.nuget.org/v3/index.json 并设置搜索选项选择第一个搜索
命令执行完后生成目录:里面有创建数据表库的sql脚本
5 .创建并打开Books控制器
CTOR 创建控制器构造函数中注入上下文
这里我们利用ASP.NET Core的依赖注入来获取数据库上下文。
public readonly BooksDBContext myDBContext;
public BooksController(BooksDBContext _myDBContext)
{
myDBContext = _myDBContext;
//myDBContext = new MyDBContext();//不需要 不然得传参数op
}
至此 以上第一种迁移连接数据库CodeFirst已经完成
第二种自动连接配置数据库方式 适用于WEBAPI ASP.NETCORE MVC EF
随便添加几个属性:
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public string Content { get; set; }
}
2 .在控制器中右键点击添加控制器:
先添加红色的 模型就选Book.cs类
之后上下文新建一个点击添加 如图:
如果连接字符串是已有数据库则直接可启动查看 因为新增的控制器中添加了Mvc的增删改查方法
如果选择的是API控制器创建 则是WEB API的一套
如果配置的appsettings.json中连接字符串数据库及表不存在
则使用数据迁移命令 打开项目网站根目录进入cmd 执行以下命令:
Add-Migration InitialCreate
将新迁移应用于数据库
Update-Database
系统会自动创建Migration 文件夹
则会自动创建数据库表字段
使用localDB vs自带的数据库则需要在Vs的视图 sqlserver视图资源管理器打开连接查看
往数据库表中添加几条数据测测 下面的是API