在我的项目中,我正在对记录进行软删除(更改为false isActive属性并使用EF Core查询过滤器过滤记录),并且需要一种删除(也可以软删除)导航属性(可以是参考属性或集合),我将属性赋予它们。
这是我为属性写的属性:
[AttributeUsage(AttributeTargets.Property, Inherited = true)]
public class DatabaseAttribute : Attribute
{
bool softDelete;
public virtual bool SoftDelete
{
get { return softDelete; }
set { softDelete = value; }
}
}
使用过:
public Guid? CargoTransactionId { get; set; }
[Database(SoftDelete = true)]
public CargoTransaction CargoTransaction { get; set; }
下面的代码可以找到我标记为软删除的导航属性:
var entries = Context.ChangeTracker.Entries();
foreach (var entry in entries)
{
var entryNavigations = entry.Navigations;
foreach (var navigation in entryNavigations)
{
var dbAttribute = navigation.Metadata.PropertyInfo.CustomAttributes
.Where(p => p.AttributeType == typeof(DatabaseAttribute))
.FirstOrDefault();
}
}
bu我无法找到在方法DbContext.Set<TEntity>()
之类的上下文中使用的DbSet实体类型。
您能帮上忙吗?