【发布时间】:2016-11-11 10:00:42
【问题描述】:
在我的多对一关系中,我试图删除其中一个子对象并在我覆盖的 SaveChanges 中保留审计跟踪。
执行 EntityState.Modified 或 EntityState.Added 时,file.Entity.Product 不为空,但执行 .Deleted 时,EF 似乎甚至在调用 base.Savechanges() 之前就积极地从实体中删除了关系。
当我在文件(子)上调用 .Remove 后,有什么方法可以在我的 SaveChanges 覆盖中检索与此文件关联的产品?
var files = from e in ChangeTracker.Entries<SavedFile>()
where e.State != EntityState.Unchanged
select e;
if (file.State == EntityState.Deleted)
{
var text = "File Deleted: " + file.Entity.FriendlyFileName;
// file.Entity.Product is null
var updatedProduct = new Update { Product = file.Entity.Product, UpdateDateTime = DateTime.Now, UpdateText = text, User = HttpContext.Current.Request.LogonUserIdentity.Name };
Updates.Add(updatedProduct);
}
【问题讨论】:
-
我猜有一个
foreach循环在files上分配file的值,对吧? -
如果您使用流体映射,您可以将必填字段存储在属性中并将其标记为 NotMapped 或 Ingnore
标签: c# asp.net entity-framework-6