nuget包导入

将以下三个包导入

Oracle.EntityFrameworkCore

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Tools

此处注意版本一致,我用的是.net 6 所以我使用的ef core 和ef core tools版本均为6.0

程序包管理器控制台运行

在下方的程序包管理器控制台下运行如下代码

Scaffold-DbContext "User ID=JHA;Password=密码;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT =1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))" Oracle.EntityFrameworkCore -OutputDir Models -Force

-OutputDir OraModel OraModel  为指定的输出目录,可更改

-Force 表示在执行 Scaffold-DbContext 命令时强制覆盖现有的代码文件,以确保生成的 DbContext 和实体类能够覆盖已存在的文件。如果省略 -Force 参数,命令可能会提示你确认是否要覆盖文件,以避免意外覆盖现有代码。

简而言之,使用 -Force 参数会在执行命令时自动覆盖已存在的文件,而不会提示用户确认。这可以方便在代码生成过程中快速更新已存在的 DbContext 和实体类,一般保留

连接字符串如下实例: 

User ID=用户名;Password=密码;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST =localhost)(PORT =1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))

上述的HOST =localhost中localhost为本机 按照实际情况进行更改

至此数据库中表结构及上下文已导出至vs中

我在我的测试库中仅仅添加了两张表 ,即PUB_EMP和STU_INFO,可以看到已经导出至指定目录

测试是否可用

using learnTest.OraModel;
using System;
using System.IO;
using System.Net.Sockets;
using System.Text;
class Program
{
    static void Main()
    {
        ModelContext model = new ModelContext();
        PubEmp emp = new PubEmp();
        var r= from pb in model.PubEmps
               select pb;
        foreach(var e in r)
            Console.WriteLine("名字:"+e.Name+"  年龄:"+e.Age);  
//此段为Insert  
       /* emp.Age = 12;
        emp.Name = "TEST";
        model.Add(emp);
        model.SaveChanges();*/
    }
}

 控制台输出如下:

至此,确定可正常使用 ,有问题欢迎讨论,1004067303@qq.com

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐