首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Oracle.EntityFrameworkCore提供程序的ICollection -DbContext不创建Scaffold属性

这个问题涉及到使用Oracle.EntityFrameworkCore提供程序创建数据库上下文时,ICollection类型的导航属性不会自动创建Scaffold属性的情况。

在Entity Framework Core中,Scaffold属性是用于指示在迁移期间是否自动创建相关的导航属性。然而,使用Oracle.EntityFrameworkCore提供程序时,ICollection类型的导航属性默认不会生成Scaffold属性。

要解决这个问题,可以采取以下步骤:

  1. 在定义数据库上下文的类中,手动为ICollection类型的导航属性添加Scaffold属性。例如:
代码语言:txt
复制
public class MyDbContext : DbContext
{
    public DbSet<Entity1> Entity1 { get; set; }
    public DbSet<Entity2> Entity2 { get; set; }

    public ICollection<Entity2> Entity1Entity2 { get; set; }
}

public class Entity1
{
    public int Id { get; set; }
    // Other properties...

    [ScaffoldColumn(false)] // 添加Scaffold属性
    public ICollection<Entity2> Entity1Entity2 { get; set; }
}

public class Entity2
{
    public int Id { get; set; }
    // Other properties...
}
  1. 执行Scaffold-Migration命令以生成迁移文件。
代码语言:txt
复制
Add-Migration InitialCreate
  1. 在生成的迁移文件中,手动为导航属性添加相关的外键和关联配置。例如:
代码语言:txt
复制
public partial class InitialCreate : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.CreateTable(
            name: "Entity1",
            columns: table => new
            {
                Id = table.Column<int>(nullable: false)
                    .Annotation("Oracle:ValueGenerationStrategy", OracleValueGenerationStrategy.IdentityColumn),
                // Other columns...
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Entity1", x => x.Id);
            });

        migrationBuilder.CreateTable(
            name: "Entity2",
            columns: table => new
            {
                Id = table.Column<int>(nullable: false)
                    .Annotation("Oracle:ValueGenerationStrategy", OracleValueGenerationStrategy.IdentityColumn),
                // Other columns...
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Entity2", x => x.Id);
            });

        migrationBuilder.CreateTable(
            name: "Entity1Entity2",
            columns: table => new
            {
                Entity1Id = table.Column<int>(nullable: false),
                Entity2Id = table.Column<int>(nullable: false)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_Entity1Entity2", x => new { x.Entity1Id, x.Entity2Id });
                table.ForeignKey(
                    name: "FK_Entity1Entity2_Entity1_Entity1Id",
                    column: x => x.Entity1Id,
                    principalTable: "Entity1",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
                table.ForeignKey(
                    name: "FK_Entity1Entity2_Entity2_Entity2Id",
                    column: x => x.Entity2Id,
                    principalTable: "Entity2",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
            });

        migrationBuilder.CreateIndex(
            name: "IX_Entity1Entity2_Entity2Id",
            table: "Entity1Entity2",
            column: "Entity2Id");
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.DropTable(
            name: "Entity1Entity2");

        migrationBuilder.DropTable(
            name: "Entity1");

        migrationBuilder.DropTable(
            name: "Entity2");
    }
}

通过以上步骤,你就可以使用Oracle.EntityFrameworkCore提供程序创建数据库上下文时,为ICollection类型的导航属性添加Scaffold属性,并生成相关的迁移文件和数据库表结构。

请注意,以上的解决方案是基于Oracle.EntityFrameworkCore提供程序的特定情况,对于其他数据库提供程序可能会有不同的解决方法。同样,根据你的实际情况,可能需要进行适当的调整和修改。

相关搜索:使用RestAssured的数据提供程序与TestNG不匹配JAXRS -使用单独的提供程序创建多个端点React -围绕默认提供程序创建连接的提供程序,它将从存储中获取数据并将其作为属性传递给默认提供程序使用JPA和Hibernate提供程序的ManyToMany关系不会创建主键发生这种情况是因为您使用了不包含所选提供程序的`BuildContext`使用Flask提供创建-反应-应用程序“未捕获的SyntaxError:意外的令牌”如何使用ios应用程序的不同元素的属性创建xpath我应该使用单文件组件数据还是创建的属性来提供常量数据?使用TestNG获取Selenium中的<org.testng.internal.reflect.MethodMatcherException>数据提供程序不匹配错误使用ngfor动态创建表。错误错误:提供的数据源与数组、Observable或DataSource不匹配类型“Context”缺少类型“Context<unknown>”中的以下属性:提供程序、使用者TS2345如何使用OKTA API创建/修改O365等公共应用程序的属性angular 2在尝试使用注入的_http提供程序时出现错误:类型上不存在属性‘http’是否可以在不创建angular应用程序的情况下使用angular material CSS?如何在自定义terraform提供程序中使用隐式创建步骤处理奇怪的API流如何使用Spring Boot中的属性在应用程序启动时动态创建bean是否可以为不使用中央服务提供商的Microsoft团队创建自定义应用程序?如果我的朋友无法使用我为他创建的应用程序,有没有办法提供运行我的应用程序所需的java文件?在不弹出的情况下,在创建React本机应用程序时使用什么来代替AppRegistryCMD/PowerShell使用传递的“启动位置”路径参数启动应用程序,而不创建快捷方式
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用CodeFirst创建并更新数据库

使用CodeFirst方式创建数据库 我们新建一个控制台项目,项目中添加两个Model:Author和Blog以及DbContext。...会根据配置文件中connectionStrings指定的数据库名称来建立数据库 31 //DbContext根据DbSet属性的类型来创建数据表,这里指定了Author类型的属性,所以会生成...虽然我们没有为DbContext添加Blog类型的属性,但依然创建了数据表T_Blogs,这是因为在Author类中定义了Blog类型的属性,若我们注释掉 public virtual ICollection...虽然成功的更新了数据库,但会导致程序中的Model和数据表不匹配。 2.2.2  自动迁移 启用自动迁移的方法前文已经陈述。...最后再补充一点,在创建数据库之后若修改TableAttribute和ColumnAttribute的值,那么在执行程序时EF会按照TabelAttribute和ColumnAttribute中指定的值和数据库进行匹配

2.7K40
  • 《ASP.ENT Core 与 RESTful API 开发实战》-- (第5章)-- 读书笔记(上)

    第 5 章 使用 Entity Framework Core 5.1 Entity Framework Core EF Core 是微软推出的 ORM 框架,一种为了解决高级编程语言中的对象和关系型数据库之间映射关系的技术...,它能够将程序中的对象自动持久化到关系型数据库中,并能够将数据库中的数据信息自动映射到编程语言中的对象 EF Core 的另一个特点是支持 LINQ,通过 LINQ,我们能够像操作 .NET 集合对象中的数据一样来操作数据库中存储的数据...5.2 使用 EF Core EF Core 有两种使用方式: 代码优先:根据先创建好的实体类来创建数据库和表 数据库优先:根据先创建好的数据库以及其中的数据表来生成与之匹配的实体类 创建一个新项目时...,通常建议使用“代码优先”的方法,如果使用“数据库优先”,可以通过以下命令生成数据库对应代码 Scaffold-DbContext 代码优先,创建实体类 namespace Library.API.Entities...[Required] [EmailAddress] public string Email { get; set; } public ICollection

    1.2K20

    Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库

    Topic.Posts 和 Post.Topic 属性建立了主外键关系,这两个表的主键为 Id,且类型为 int ,这表示在下面的创建数据库过程中,EFCore 会自动的为这两个实体对象建立关系和主键...,并会自动设置 Id 字段为主键标识 1.3 编写数据库上下文对象,该对象必须继承自 DbContext DbContext 内置了很多个构造函数,这里使用配置选项的方式,实现方式也非常简单,最终,在...1.6 在项目中执行 CURD 操作 至此,数据库创建完成,为了在控制器中使用 ForumContext 对象,我们在 HomeController 中使用依赖注入的方式获得 FormContext...驱动,生成的实体模型输出到目录 DbModels 中 ` Scaffold-DbContext "server=....表示延迟加载此关联对象,在 Code First 中,导航属性还起到主外键关系定义的作用 结束语 本文介绍两种使用 EF Core 的方式 通过一个简单的 Forum 示例来一步一步的了解了 EFCore

    1.7K21

    C# 数据操作系列 - 9. EF Core 完结篇

    所以决定分享一下,个人在实际开发中使用EF Core的一些经验和使用的扩展包。 1....DbContext 也提供了Add/AddRange的异步方法,但是这组方法的异步版需要数据库的支持,并不是一个通用的方法,所以就没有提。...using关键字的机制不会因为中途返回而不执行 context.Dispose(),也不会因为中间被抛出异常不执行。...EF Core的数据库访问插件 微软为SQLite和SQL Server提供了默认的数据库连接程序,其中 SQLite的是: Microsoft.EntityFrameworkCore.Sqlite SQL...Server是: Microsoft.EntityFrameworkCore.SqlServer 其他的常用数据库都是由三方提供,以下是一些常见的连接程序包和数据库名称: NuGet 程序包 支持的数据库引擎

    1.2K10

    .NET EF Core(Entity Framework Core)

    EF Core不支持模型优先,推荐使用代码优先,遗留系统可以使用Scaffold-DbContext来生成代码实现类似DBFirst的效果,但是推荐用Code First 。...Migration数据库迁移 面向对象的ORM开发中,数据库不是程序员手动创建的,而是由Migration工具生成的。...“程序包管理器控制台”中执行Update-database 4、查看一下数据库,表建好了 反向工程 1、根据数据库表来反向生成实体类 2、Scaffold-DbContext 'Server=....2、再次运行反向工程工具,对文件所做的任何更改都将丢失。 3、不建议把反向工具当成了日常开发工具使用,不建议DBFirst。...1、把被并发修改的属性使用IsConcurrencyToken()设置为并发令牌。

    47512

    【ASP.NET Core 基础知识】--数据库连接--使用Entity Framework Core进行数据库访问

    创建DbContext类。 配置实体模型。 打开数据库连接。 以下是一个简单的示例,演示了如何使用EF Core连接到数据库: 首先,确保已经安装了适当的数据库提供程序包。...MyDbContext 类配置了使用 SQL Server 数据库提供程序,并定义了一个名为 Blogs 的 DbSet 属性,用于表示数据库中的 Blog 实体。...为了实现跨数据库操作,你必须在 DbContext 中指定对应的数据库提供程序,并在 DbContext 构造函数中提供数据库连接字符串。...例如,如果你要使用 SQL Server,你需要安装 Microsoft.EntityFrameworkCore.SqlServer。 创建一个 DbContext 类,并为其指定数据库提供程序。...如果你需要在应用程序中使用多个数据库,你可以创建多个 DbContext 实例,每个实例对应一个数据库。每个 DbContext 都会维护它自己的会话、缓存和工作线程。

    62400

    张高兴的 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用

    欢迎批评与指正,有任何的问题都可以通过邮件或者评论的方式与我交流。 张高兴 2022年3月22日 ---- 本文将使用 .NET 6 创建一个控制台程序,从 0 开始,学习 EF Core 的使用。...项目依赖 使用 Scaffold-DbContext 命令生成实体类 手动创建实体类 实体属性 表的映射 列的映射 主键的映射 导航属性 创建数据库上下文 从数据库中查询 准备工作 准备工作包含两部分...Scaffold-DbContext 命令生成实体类 接下来使用 Database First 的方式去生成实体类。...执行 Scaffold-DbContext 命令报错时,请将 Pandemic.Models 设为启动项目,并且将“程序包管理器控制台”中的“默认项目”也设置为 Pandemic.Models。...DbContext 的实例表示程序与数据库的一个会话(session),通过 DbContext 实例对数据库中的数据进行修改和查询。

    2.5K10

    Entity Framework 约定

    如果我们定义的模型由继承层次,只需要为基类定义一个DbSet属性即可(如果派生类与基类在同一个程序集,派生类将会被自动包含),代码如下: public class Department { public...DbSet Departments { get; set; } } 当然,有时候我们不希望模型映射到数据库中,这时我们可以通过Fluent API 来忽略指定的模型映射到数据库中...如果一个类中既没有id属性,也没有类名+id的属性,那么代码在运行时将会报错,因为EF没有找到符合要求的字段创建主键。...EF中定义关系要使用到导航属性,通过导航属性可以定义多个模型之间的关系。大部分情况下我们会将导航属性和外键属性结合在一起使用。...,在模型创建之后用于操作对模型的存储,***自定义类约定***都必须在 OnModelCreating 方法中显式配置,例如我们要将模型中类型为DateTime的属性映射为datetime2,可进行如下配置

    1.3K10

    EF Core使用CodeFirst在MySql中创建新数据库以及已有的Mysql数据库如何使用DB First生成域模型

    view=aspnetcore-2.1 使用EF CodeFirst在MySql中创建新的数据库,我们首先在appsettings.json文件夹中,使用json对来给出mysql数据库连接语句,其次在...新建一个类,用来做数据表的基类,同是派生一个继承自DbContext的数据库上下文类,注意!这个新的数据库上下文一定要有构造函数。...做好之后,使用如下命令创建新的数据库: 首先打开Nuget管理控制台: Add-Migration xxxx Update-Database 如果我们就生成了数据库了,还会给我们生成一个Migration...那么如果有了数据库怎么使用DbContext呢? 从现有的MySql数据库中使用DB First来创建数据表模型 在这种方案下,我们只需要引入第三方的mysql数据库驱动就可以。...然后就执行下面的命令 第一种方案、 从现有Mysql数据库添加到EF Core,使用 程序包控制台(PM): Scaffold-DbContext "server=localhost;port=3306

    45320

    【愚公系列】2023年02月 .NETC#知识点-使用控制台手搭webapi框架

    文章目录 前言 一、使用控制台手搭webapi框架 1.配置文件 2.控制台配置 二、EFCore框架DBSet配置详解 1.实体统一配置 2.实体继承统一接口 3.获取程序集所有类 4.批量注入模型类到...本文涉及的知识量巨大主要有如下: EFCore Autofac Serilog Swagger 非常多底层知识 一、使用控制台手搭webapi框架 1.配置文件 appsettings.Development.json...中作为DBSets,再也不需要一个个写DBSet了,可以用过DbContext.Set()获取用户的DBSet。...三、EFCore框架表配置详解 1.配置基类, 创建一个配置基类,继承自IEntityTypeConfiguration,做一些通用的配置,比如设置主键,软删除等。...,本质就是创建外键,虽然查询很方便,生产中不建议使用!!!

    1.5K10

    .net 温故知新:【10】.NET ORM框架EFCore使用入门之CodeFirs、DBFirst

    EF Core 通过数据库提供程序插件模型与 SQL Server/Azure SQL 数据库、SQLite、Azure Cosmos DB、MySQL、PostgreSQL 和更多数据库配合使用。...EFCore入门 在上面的EFCore介绍中我们又看到了提供程序描述,之前文章多次提到这个提供程序是.net框架中随处可见的,也就是通过这些不同的提供程序实现扩展和适配。...一个模型快照类SqliteContextModelSnapshot上面的[DbContext(typeof(SqliteContext))]属性标识类所属的DbContext。...然后安装sqlserver的提供程序 nuget 包。...Install-Package Microsoft.EntityFrameworkCore.SqlServer 安装好 nuget 包后在程序包管理器控制台里面使用命令: Scaffold-DbContext

    2.9K30

    Entity Framework Core一键生成实体命令

    打开Vs中工具——Nug包管理器——程序包管理控制台 设置启动项目为存储实体模型的类库或控制台 Scaffold-DbContext  "数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer...项目实际用到的命令字符串:Scaffold-DbContext "Data Source=YD-2622;Initial Catalog=MobileVideo;User ID=sa;Password=...   中执行以下语句生成 实体类 Scaffold-DbContext "server=....-ContextDir *** DbContext文件存放的目录 -Context *** DbContext文件名 -Schemas *** 需要生成实体数据的数据表所在的模式 -Tables **...* 需要生成实体数据的数据表的集合 -DataAnnotations -UseDatabaseNames 直接使用数据库中的表名和列名(某些版本不支持) -Force 强制执行,重写已经存在的实体文件

    2.7K20

    .Net Core + EF + mysql 从数据库生成实体

    Microsoft.EntityFrameworkCore.Tools Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design 运行命令生成实体 Mysql 版本: Scaffold-DbContext...3306;database=tech5_kj;sslmode=none;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -Force 或者 Scaffold-DbContext...sslmode=none;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -UseDatabaseNames -Force Sql server版本: Scaffold-DbContext...-ContextDir *** DbContext文件存放的目录 -Context *** DbContext文件名 -Schemas *** 需要生成实体数据的数据表所在的模式 -Tables **...* 需要生成实体数据的数据表的集合 -DataAnnotations -UseDatabaseNames 直接使用数据库中的表名和列名(某些版本不支持) -Force 强制执行,重写已经存在的实体文件

    1.7K10
    领券