代码拉取完成,页面将自动刷新
什么代码导致?
public sealed class AbcDbContext : AppDbContext,IModelBuilderFilter
{
public AbcDbContext(DbContextOptions options) : base(options)
{
EnabledEntityChangedListener = true;
}
//public DbSet<AutidLog> AutidLogs { get; set; }
#region 全局筛选器
public void OnCreated(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
{
//此方法没有执行
}
public void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)
{
//此方法没有执行
var expression = BuilderIsDeleteLambdaExpression(entityBuilder);
if (expression == null) return;
entityBuilder.HasQueryFilter(expression);
}
/// <summary>
/// 构建 u => EF.Property<bool>(u, "IsDeleted") == false 表达式
/// </summary>
/// <param name="entityBuilder"></param>
/// <returns></returns>
private LambdaExpression BuilderIsDeleteLambdaExpression(EntityTypeBuilder entityBuilder)
{
// 获取实体构建器元数据
var metadata = entityBuilder.Metadata;
if (metadata.FindProperty(nameof(Entity.IsDeleted)) == null) return default;
// 创建表达式元素
var parameter = Expression.Parameter(metadata.ClrType, "u");
var properyName = Expression.Constant(nameof(Entity.IsDeleted));
var propertyValue = Expression.Constant(false);
// 构建表达式 u => EF.Property<bool>(u, "IsDeleted") == false
var expressionBody = Expression.Equal(Expression.Call(typeof(EF), nameof(EF.Property), new[] { typeof(bool) }, parameter, properyName), propertyValue);
var expression = Expression.Lambda(expressionBody, parameter);
return expression;
}
#endregion
通过挂Furion源码调试,发现 此代码没有执行 AppDbContextBuilder.cs 461行
// 添加全局筛选器
if (entityCorrelationType.HasImplementedRawGeneric(typeof(IPrivateModelBuilderFilter)))
{
result.ModelBuilderFilterTypes.Add(entityCorrelationType);
// 判断是否是 DbContext 类型,
if (typeof(DbContext).IsAssignableFrom(entityCorrelationType))
{
// 判断是否已经注册了上下文并且是否等于当前上下文
if (Penetrates.DbContextWithLocatorCached.Values.Contains(entityCorrelationType) && entityCorrelationType == dbContext.GetType())
{
result.ModelBuilderFilterInstances.Add(dbContext as IPrivateModelBuilderFilter);
}
}
else result.ModelBuilderFilterInstances.Add(Activator.CreateInstance(entityCorrelationType) as IPrivateModelBuilderFilter);
}
创建一个临时仓库,还原这个错误出来,我新项目,pear,都没问题。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
无法重现,先关闭issue。
我后来发现是 再 上下文的类上面使用了 SkipScan ,然后跳过了!!!
登录 后才可以发表评论