从属性类型设置的ef核心上下文

时间:2020-11-06 10:26:04

标签: properties entity-framework-core ef-core-3.1 soft-delete

在我的项目中,我正在对记录进行软删除(更改为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实体类型。

您能帮上忙吗?

0 个答案:

没有答案