Nuget安装依赖:
Package Manager Console,default project选定目标project,安装Oracle.EntityFrameworkCore
Oracle.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Relational (2.2.0)
Oracle.ManagedDataAccess.Core (2.19.60)
Scaffold-DbContext "Data Source=[ip:port/service];User Id=[username];Password=[password];Persist Security Info=True;" Oracle.EntityFrameworkCore -outputdir MyModels -f
Oracle无自增主键,但有Sequence,EFCore也可以读出并生成相关代码:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasAnnotation("ProductVersion", "2.2.6-servicing-10079")
.HasAnnotation("Relational:DefaultSchema", "username");
modelBuilder.Entity<ScanJob>(entity =>
{
entity.HasKey(e => e.JobId);
entity.ToTable("JOB");
entity.HasIndex(e => e.JobId)
.HasName("PK_JOB")
.IsUnique();
entity.Property(e => e.JobId)
.HasColumnName("JOB_ID")
.HasColumnType("INTEGER");
});
modelBuilder.HasSequence("SEQ_JOB_ID");
}
需要使用sequence的话,要在主键列Property加上ForOracleUseSequenceHiLo:
entity.Property(e => e.JobId)
.HasColumnName("JOB_ID")
.HasColumnType("INTEGER")
.ForOracleUseSequenceHiLo("SEQ_JOB_ID");