本文介绍了如何使用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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!