如何使用EF Core Oracle生成和自动递增ID [英] How to generate and auto increment Id with EF Core Oracle

查看:1108
本文介绍了如何使用EF Core Oracle生成和自动递增ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我首先使用实体​​框架核心2代码在Oracle 11g中生成数据,实体提供者是dotConnect,我的POCO类如下:

I use entity framework core 2 Code first to generate data in Oracle 11g, the entity provider is dotConnect, my POCO class is as follow:

public partial class Favoritepage
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public int Personnelid { get; set; }
    public int Pageid { get; set; }
}

我的DbContext如下:

My DbContext is as follow:

public partial class ModelContext : DbContext
{
    public virtual DbSet<Favoritepage> Favoritepage { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.HasSequence<int>("S_FAVORITEPAGE", "SECURITY")
            .StartsAt(1)
            .IncrementsBy(20);

        modelBuilder.Entity<Favoritepage>(entity =>
        {
            entity.ToTable("FAVORITEPAGE", "SECURITY");

            entity.HasIndex(e => e.Id)
                .HasName("PK_FAVORITEPAGE")
                .IsUnique();

            entity.Property(e => e.Id).HasColumnName("ID").ForOracleHasDefaultValueSql("S_FAVORITEPAGE.NEXTVAL");
        });
    }
}

当我插入这样的实体时:

When I insert entity like this:

static void Main(string[] args)
    {
        using (var dbContxt = new ModelContext())
        {
            var favo = new Favoritepage()
            {
                Pageid = 11253,
                Personnelid = 14313,

            };
            dbContxt.Favoritepage.Add(favo);
            dbContxt.SaveChanges();
            Console.ReadLine();
        }
    }

它不起作用,并且会增加这样的期望 ORA-01400无法将值NULL插入列'Id'

It does not work, and raise expcetion like this ORA-01400 Cannot insert the value NULL into column 'Id'

怎么了?

推荐答案

以这种方式为我工作。

builder.Property(e => e.Id).HasColumnName("ID")
               .ForOracleUseSequenceHiLo("SEQUENCE_NAME");

这篇关于如何使用EF Core Oracle生成和自动递增ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆