我将 Entity Framework Core 2.1.4 与 Oracle 11 数据库和 Devart.Data.Oracle.EFCore 提供程序一起使用。数据库优先方法。
我想在插入时从 ID 列(主键)的序列值中获取,而无需每次都明确设置。因此,基于与 SQL Server 的类似信息,我按以下方式进行了操作:
实体
public class Foo
{
public int Id { get; set; }
public double Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
映射(OnModelCreating 方法)
modelBuilder.HasSequence<int>("SEQ_FOOS", schema: "SCHEMA")
.StartsAt(1)
.IncrementsBy(1);
modelBuilder.Entity<Foo>(entity =>
{
entity.ForOracleToTable("FOOS");
entity.HasKey(e => e.Id);
entity.Property(e => e.Id).ForOracleHasColumnName("ID").IsRequired().ForOracleHasDefaultValueSql("SELECT SEQ_FOO.NEXTVAL FROM DUAL");
entity.Property(e => e.Value).HasColumnName("VALUE");
});
Run Code Online (Sandbox Code Playgroud)
增值:
using (var dbContext = new FooDbContext())
{
var foo = new Foo()
{
Value = 5
};
dbContext.Foos.Add(foo); …Run Code Online (Sandbox Code Playgroud)