2

使用 EfCore 2.2.4 我试图DbSet在我的一个 Db 上下文中覆盖基本实现。

我正在使用Oracle.ManagedDataAccess.Core2.18.6,如果我尝试调用context.Customer.Add(new Customer());(客户中的所有字段都可以为参数,除了主键RECORDNO)我得到错误:

无法将 NULL 插入 (SCHEMA.CUSTOMER.RECORDNO)

RECORDNO我意识到在通过 EfCore 提交更改之前,我需要计算出序列值并将其添加到实体中,并希望通过DbSet.Add如下扩展来做到这一点:

public class OracleDbContext : DbContext
{
    public class OracleDbSet<TEntity> : DbSet<TEntity> where TEntity : class
    {
        public override EntityEntry<TEntity> Add(TEntity entity)
        {
            SetEntityRecordNumber(entity); //this will use reflection for [Key] attribute and set it to a sequence value I collect from the database
            return base.Add(entity);
        }
    }

    public OracleDbSet<Customer> Customers { get; set; }
...

但是,当我现在调用context.Customer.Add(new Customer());该值为 null 时context.Customer

我如何正确地注册aswell 的DbContext实例,或者是否有一种更简单且仍然通用的方法来实现覆盖或扩展?OracleDbContextDbContextDbContext.Add()

4

0 回答 0