使用 EfCore 2.2.4 我试图DbSet
在我的一个 Db 上下文中覆盖基本实现。
我正在使用Oracle.ManagedDataAccess.Core
2.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
实例,或者是否有一种更简单且仍然通用的方法来实现覆盖或扩展?OracleDbContext
DbContext
DbContext.Add()