使用EfCore 2.2.4,试图在我的一个Db上下文中覆盖基本的DbSet
实现。
我正在使用Oracle.ManagedDataAccess.Core
2.18.6,并且如果我尝试调用context.Customer.Add(new Customer());
(出于主观考虑,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());
时,该值对于context.Customer
为空。
如何正确获取DbContext
来注册OracleDbContext
以及DbContext
的实例,还是有一种更简单且通用的方法来实现对{{1 }}?