小编Fel*_*lix的帖子

Devart.Data.Oracle.EFCore - 如何使用序列来设置 PK 列值?

我将 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)

oracle frameworks entity core devart

4
推荐指数
1
解决办法
3398
查看次数

标签 统计

core ×1

devart ×1

entity ×1

frameworks ×1

oracle ×1