首页
学习
活动
专区
工具
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使用传递的“启动位置”路径参数启动应用程序,而不创建快捷方式
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

共17个视频
动力节点-JDK动态代理(AOP)使用及实现原理分析
动力节点Java培训
动态代理是使用jdk的反射机制,创建对象的能力, 创建的是代理类的对象。 而不用你创建类文件。不用写java文件。 动态:在程序执行时,调用jdk提供的方法才能创建代理类的对象。jdk动态代理,必须有接口,目标类必须实现接口, 没有接口时,需要使用cglib动态代理。 动态代理可以在不改变原来目标方法功能的前提下, 可以在代理中增强自己的功能代码。
领券