C# EFCore 根据Oracle/SqlServer数据库表生成实体类和DbContext
官方文档:
https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/scaffolding?tabs=dotnet-core-cli
本文以Oracle数据库为演示例子,也包含SqlServer教程,注意阅读文字,以免报错。
VS→工具→Nuget包管理器→程序包管理器控制台(也可以直接右键依赖项管理Nuget包),
注意默认项目别选错了,
依次输入如下命令
Install-Package Microsoft.EntityFrameworkCore.Tools //工具包 Install-Package Microsoft.EntityFrameworkCore.Design//设计包 Install-Package Oracle.EntityFrameworkCore //Oracle包
前两个是必备,最后是对应数据库的EF包,比如是sqlserver就导入sqlserver的ef包
Oracle包:Oracle.EntityFrameworkCore,连接字符串例子:Data Source=127.0.0.1/pwwdb_st;Password=sa;User ID=123456;
SqlServer包:Microsoft.EntityFrameworkCore.SqlServer,连接字符串例子:Server=127.0.0.1;DataBase=Test;Uid=sa;Pwd=123456
最后输入
Scaffold-DbContext "Data Source=123;Password=123;User ID=123;" Oracle.EntityFrameworkCore -OutputDir Entity -context aaaContext
解释一下,各个数据库都通用,前面是关键词,引号里是连接字符串,后面跟着的是对应数据库的EF包,
-OutputDir 要在其中放置文件的目录。 路径相对于项目目录。没有会自动创建
-context 是生成的上下文名称
然后如果以后也不打算项目内迁移数据库啥的可以把除了Oracle.EntityFramework其他的包移除了,
生成的dbContext里会包含警告,意思是代码里最好不要带这些敏感信息,
然后把连接字符串写到appsettings.json,
"ConnectionStrings": {
"DLGS": "Data Source=123;Password=123;User ID=123;"
},
startup类里注入,再把上面的警告和代码注释掉就ok了
services.AddDbContext<DlgsContext>(op =>
{
op.UseOracle(Configuration.GetConnectionString("DLGS"));
});
最后宣传一下我的小demo,
搞了一个实体生成器,.net5的winform窗体实现的
生成器模式(Builder Pattern)
想看代码的可以上我的github上去看,求star💖
github地址:https://github.com/GaoXiong666/CreateEntity