文章目录
前言
一、EF Core是什么?
微软提供的一款ORM框架。
二、准备
工具使用 SQL Server Management Studio (SSMS): 官网链接
数据库备份链接: 官网链接
1.安装必要的包
以下这几个包都需要安装。
包引用如下:
链接字符串查询链接: [地址](https://www.connectionstrings.com/mysq
三、DbFirst-基于数据库的逆向工程
链接: 官网
使用基架,在PMC中执行->
Scaffold-DbContext 'Data Source=localhost;Initial Catalog=AdventureWorks;Trusted_Connection=true' Microsoft.EntityFrameworkCore.SqlServer
->生成实体Model,此处有坑。
报错是因为主项目没有引用EFCore_DBLibrary,引用后再次执行即可,见下图。
也可以根据数据库中的模式,生成部分表的实体,并进行注释(Annotation)。
效果如下:
基于选定的表生成实体
Scaffold-DbContext … -Tables Artist, Album,表名
举个栗子:
dotnet ef dbcontext scaffold "server=localhost;database=efcore;uid=sa;pwd=Qwe123456;" Microsoft.EntityFrameworkCore.SqlServer --data-annotations --context EfCoreContext --context-dir Data --output-dir Models
–data-annotations:数据注释在实体上
–context EfCoreContext:上下文指定命名为 EfCoreContext
–context-dir Data:上下文保存在根目录的 Data 文件夹下
–output-dir Models:实体保存在根目录的 Models 文件夹下
————————————————
版权声明:本文为CSDN博主「xuhss_com」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuhss_com/article/details/124311535
四、使用appsettings.json配置并访问数据库。
1.安装必要的包:
2.添加json配置文件(属性设置成Copy Always)
{
"ConnectionStrings": {
"AdevntureWorks": "Data Source=localhost;Initial Catalog=AdventureWorks;Trusted_Connection=True"
}
}
3.获取连接字符串
BuildConfiguration方法的作用:
1、告诉解决方案从哪里获取json文件;
2、说明如何加载配置文件的内容到解决方案
class Program
{
private static IConfigurationRoot _configuration;
static void Main(string[] args)
{
BuildConfiguration();
}
private static void BuildConfiguration()
{
_configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsetting.json", optional: true, reloadOnChange: true)
.Build();
}
}
_configuration.GetConnectionString(“AdventureWorks”)即可获取到连接链接字符串。
3.连接数据库并查询数据
// See https://aka.ms/new-console-template for more information
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace EFCore_DBLibrary
{
class Program
{
private static IConfigurationRoot _configuration;
private static DbContextOptionsBuilder<AdventureWorksContext> _optionsBuilder;
static void Main(string[] args)
{
BuildConfiguration();
BuildContextOptions();
Console.WriteLine($"ConStr:{_configuration.GetConnectionString("AdventureWorks")}");
ListPeople();
Console.WriteLine();
}
private static void BuildConfiguration()
{
_configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.Build();
}
static void BuildContextOptions()
{
_optionsBuilder = new DbContextOptionsBuilder<AdventureWorksContext>();
_optionsBuilder.UseSqlServer(_configuration.GetConnectionString("AdventureWorks"));
}
static void ListPeople() {
using var db = new AdventureWorksContext(_optionsBuilder.Options);
var people= db.People1.OrderByDescending(x => x.LastName).Take(20).ToList();
foreach (var item in people)
{
Console.WriteLine($"{item.FirstName}-{item.LastName}");
}
}
}
}