有时候想搭个环境做测试, 又记不住那些 command, 官方教程又啰嗦. git clone 模板又不太好管理, 索性记入在这里吧.

创建项目

dotnet new webapp -o SimpleTestEFCore

for console app 的话

dotnet new console -o SimpleTestEFCore

Install NuGet

dotnet add package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools #(如果你要 F5 debug db.Database.Migrate(), 这个一定要装哦)

Files

Product.cs

namespace SimpleTestEFCore.Entity;

public class Product
{
public int Id { get; set; }
public string Name { get; set; } = "";
}

ApplicationDbContext.cs

using Microsoft.EntityFrameworkCore;

namespace SimpleTestEFCore.Entity;

public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(
DbContextOptions<ApplicationDbContext> options
) : base(options)
{
} public DbSet<Product> Products => Set<Product>();
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Product>().ToTable("Product");
modelBuilder.Entity<Product>().Property(e => e.Name).HasMaxLength(256);
}
}

for console app 的话,不需要 constructor 不需要传 options

appsettings.json

"ConnectionStrings": {
"ApplicationDbContext": "Server=192.168.1.152;Database=SimpleTestEFCore;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True"
},

p.s. TrustServerCertificate=true 是 EF Core 7.0 之后才需要添加的 (算是 workaround, right way 是做 Certificate).

参考:

Github Issue – EFCore.SqlServer 6.0.1 Untrusted certificate authority error

Released: General Availability of Microsoft.Data.SqlClient 4.0

Stack Overflow – "The certificate chain was issued by an authority that is not trusted" when connecting DB in VM Role from Azure website

因为 EF Core 7.0 depend 了 Microsoft.Data.SqlClient 4.0 而 4.0 有一个 breaking changes Encrypt = true, by default. .

Program.cs

builder.Services.AddDbContext<ApplicationDbContext>(options =>
{
options
.UseSqlServer(builder.Configuration.GetConnectionString("ApplicationDbContext"))
.LogTo(Console.WriteLine); // log sql query for easy debug
});

for console app 的话,不需要 appsettings.json, 和 Program.cs 的 setup,取而代之的是在 ApplicationDbContext overrde OnConfiguring 方法

public class ApplicationDbContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseSqlServer("Server=192.168.1.152;Database=SimpleTestEFCore;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True")
.LogTo(Console.WriteLine);
}
}

cmd

dotnet ef migrations add init
dotnet ef database update

Index.cshtml.cs

using SimpleTestEFCore.Entity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore; namespace SimpleTestEFCore.Pages; public class IndexModel : PageModel
{
public async Task OnGetAsync([FromServices] ApplicationDbContext db)
{
var products = await db.Products.ToListAsync();
db.Products.Add(new Product { Name = "Product1" });
await db.SaveChangesAsync();
}
}

想在 program.cs 注入也可以, 必须 CreateScope 哦.

var app = builder.Build();
using var scope = app.Services.CreateScope();
var db = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
var person = new Person
{
Name = "Derrick",
Animals = new List<Animal>
{
new Dog { Name = "Dog1", DogPrice = 100 },
new Cat { Name = "Cat1", CatPrice = 100 },
}
};
db.People.Add(person);
await db.SaveChangesAsync();

for app console 的话

using EFCore.Entity;
using Microsoft.EntityFrameworkCore; using var db = new ApplicationDbContext();
var products = await db.Products.ToListAsync();
Console.WriteLine(products.Count);

EF Core – Get Started 搭建单侧环境的更多相关文章

  1. Windows Server 2008搭建单域环境

    前言 一个典型的单域环境由主机,DC(Domain Controller域控制器).DNS服务器组成.DNS.DC都可以有多个,以实现负载均衡和容错 域中的计算机通过DNS解析域控制器,然后向域控制器 ...

  2. ASP.NET Core on K8S学习初探(1)K8S单节点环境搭建

    当近期的一个App上线后,发现目前的docker实例(应用服务BFF+中台服务+工具服务)已经很多了,而我司目前没有专业的运维人员,发现运维的成本逐渐开始上来,所以容器编排也就需要提上议程.因此我决定 ...

  3. EF Core 一、重识 EF

    重识EF EF Core 学习资料:https://docs.microsoft.com/zh-cn/ef/core/dbcontext-configuration/ 本为作为EF Core学习的开始 ...

  4. 【.NET 6】使用EF Core 访问Oracle+Mysql+PostgreSQL并进行简单增改操作与性能比较

     前言 唠嗑一下.都在说去O或者开源,但是对于数据库选型来说,很多人却存在着误区.例如,去O,狭义上讲,是去Oracle数据库.但是从广义上来说,是去Oracle公司产品或者具有漂亮国垄断地位和需要商 ...

  5. EF Core 实现多租户

    目录 SAAS 和多租户 多租户数据隔离方案 使用 EF Core 简单实现多租户 单数据库实现 多数据库实现 源代码 参考 SAAS 和多租户 SaaS(软件及服务)区别于其他应用程序的主要特征就是 ...

  6. 【asp.net core mvc + angular6实战】 - 1. 环境搭建

    为什么打算写这些文章? 没有为什么,只是为了学习Angular和更了解.Net Core等技术 需要用到的技术? 后端使用.Net Core 2.1 + EF Core 2.1 + Mysql 5.7 ...

  7. Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本)

    Asp.net Core + EF Core + Bootstrap搭建的MVC后台通用管理系统模板(跨平台版本) 原创 2016年07月22日 10:33:51 23125 6月随着.NET COR ...

  8. .Net Core2.2 + EF Core + DI,三层框架项目搭建教程

    笔记: 近两年.Net Core发展的很快,目前最新版为3.0预览版,之前在网上买了一本1.1版书籍都还没来得及看呢,估计现在拿出来看也毫无意义了.已多年.net工作经验,看书不如直接实际上手来得快, ...

  9. SQL Server、MySQL主从搭建,EF Core读写分离代码实现

    一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...

  10. 单机搭建Android开发环境(一)

    老话,工欲善其事必先利其器.为了学习安卓系统开发,我下了血本,更换了电脑.俗语,磨刀不误砍柴工,好钢用在刀刃上,为了发挥新本的最大潜能,我花费了很长时间去做配置和优化,都感觉有点偏执了.不过,从到目前 ...

随机推荐

  1. [oeasy]python0132_[专业选修]utf-8_unicode_transformation_format_8_编码方式

    utf-8 回忆上次内容 上次再次输出了大红心<span style="color:red"></span> 找到了红心对应的编码 黑红梅方都对应有编码   ...

  2. 题解:P10320 勇气(Courage)

    P10320 勇气(Courage) 推导过程 本题是一道数学题,重点是如何推导出正确式子. 首先,先特判几个特殊点: 当 \(n>=2\) 且 \(x=2\) 时,是不存在解的,战斗力无论何时 ...

  3. git常用代码

    //当前文件夹删除的文件恢复git reset Head .// 查看所有分支git branch// 查看本地分支 对应的远程分支git branch -vv//git branch -vv//创建 ...

  4. Golang 高性能 Websocket 库 gws 使用与设计(一)

    前言 大家好这里是,白泽,这期分析一下 golang 开源高性能 websocket 库 gws. 视频讲解请关注B站:白泽talk 介绍 gws:https://github.com/lxzan/g ...

  5. 写写Redis十大类型hyperloglog(基数统计)的常用命令

    hyperloglog处理问题的关键所在和bitmap差不多,都是为了减少对sql的写操作,提高性能,用于基数统计的算法.基数就是一种数据集,用于收集去重后内容的数量.会有0.81%的误差 hyper ...

  6. (六)Redis 消息队列 List、Streams

    Redis 适合做消息队列吗?有什么解决方案?首先要明白消息队列的消息存取需求和工作流程. 1.消息队列 我们一般把消息队列中发送消息的组件称为生产者,把接收消息的组件称为消费者,下图是一个通用的消息 ...

  7. Efficientvit: Enhanced linear attention for high-resolution low-computation visual recognition

    GitHub地址: https://github.com/mit-han-lab/efficientvit#usage 相关: https://www.jetson-ai-lab.com/vit/tu ...

  8. 《Python数据可视化之matplotlib实践》 源码 第四篇 扩展 第十二章

    图  12.1 import matplotlib.pyplot as plt import numpy as np barSlices=12 theta=np.linspace(0.0, 2*np. ...

  9. [POI2012] PRE-Prefixuffix 题解

    前言 题目链接:洛谷. 题意简述 给出长为 \(n\) 的串 \(\texttt{S}\).求最大的 \(l\) 满足: \[2l \leq n \land \texttt{S}[1 \ldots l ...

  10. JDK、JRE和JVM简述

    JDK(Java Development Kit) JDK是Java开发环境的核心组件,包括:Java编译器.JRE(Java运行环境)JavaDoc文档生成器和其他一些工具. JDK是Java程序员 ...