由于某些原因,我想在对象插入Ef Core Intreceptor
之前获取对象,例如,当我想要时
var newOrder = new Order { CustomerID = 3, EmployeeID = 4, OrderDate = DateTime.Now };
_myContext.Orders.Add(newOrder);
_myContext.SaveChanges();
我试图在Interceptor
的ReaderExecuting
方法上获得newOrder
,所以我覆盖了这个方法:
public override InterceptionResult<DbDataReader> ReaderExecuting(DbCommand command, CommandEventData eventData, InterceptionResult<DbDataReader> result)
{
return base.ReaderExecuting(command, eventData, result);
}
这个方法被调用了,那么我如何在上面的方法上获得newOrder
呢?
我知道在NHibernate
中,我们可以这样做:
public bool OnPreInsert(PreInsertEvent @event)
{
//some other codes
}
我可以通过@event.Entity
获得对象,但在Ef Core 3
中有这样的方法吗?
我知道我参加聚会迟到了,但以防万一有人来这里寻求答案。
微软为EF core 7添加了一堆新的、实际上很有用的拦截器,尽管它的名字叫btw.,但它运行在.NET 6上
我认为EF核心7号之前的拦截弹用处要小得多。
https://learn.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.diagnostics.iinterceptor?view=efcore-7.0
只需展开"派生"部分,它就会向您显示可用拦截器的列表。
如果要在实体保存到数据库之前对其进行编辑,可以使用SaveChangesInterceptor
。只需创建一个从中继承的类并重写SavingChanges
方法即可。
https://learn.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.diagnostics.savechangesinterceptor?view=efcore-7.0