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

 

posted @ 2021-07-16 10:28  戈凹高  阅读(2191)  评论(1编辑  收藏  举报