pej*_*man 6 orm entity-framework-core
出于某种原因,我想在插入对象之前获取对象Ef Core Intreceptor,例如在我想要的时候
var newOrder = new Order { CustomerID = 3, EmployeeID = 4, OrderDate = DateTime.Now };
_myContext.Orders.Add(newOrder);
_myContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我尝试newOrder使用ReaderExecuting方法,Interceptor所以我覆盖了这个方法:
public override InterceptionResult<DbDataReader> ReaderExecuting(DbCommand command, CommandEventData eventData, InterceptionResult<DbDataReader> result)
{
return base.ReaderExecuting(command, eventData, result);
}
Run Code Online (Sandbox Code Playgroud)
这个方法被调用了,那么我怎样才能newOrder使用上面的方法呢?
我知道NHibernate我们可以这样做:
public bool OnPreInsert(PreInsertEvent @event)
{
//some other codes
}
Run Code Online (Sandbox Code Playgroud)
我可以通过 获取对象@event.Entity,但是Ef Core 3有什么办法可以这样做吗?
我知道我参加聚会迟到了,但以防万一有人来这里寻找这个问题的答案。
Microsoft 在 EF core 7 中添加了一堆新的、实际上有用的拦截器,尽管它的名称是在 .NET 6 上运行的。
我认为 EF core 7 之前的拦截器用处不大。
只需展开“派生”部分,它就会向您显示可用拦截器的列表。
如果您想在将实体保存到数据库之前对其进行编辑,您可以使用SaveChangesInterceptor. 只需创建一个继承它的类并重写该SavingChanges方法即可。