Coldairarrow / EFCore.Sharding

Database Sharding For EFCore
Apache License 2.0
694 stars 144 forks source link

增加HasQueryFilter #22

Closed Giant150 closed 4 years ago

Giant150 commented 4 years ago

在BuildDbCompiledModel的时候,增加HasQueryFilter 做逻辑删除过滤 如果不加QueryFilter, 那么在Bussiness层做Include的时候,也会把Deleted的数据加载出来 this.GetIQueryable().Include(i => i.XXXX)

Giant150 commented 4 years ago

哦哦。写错了。是!=null entityTypeBuilder.Metadata.FindProperty(ShardingConfig.DeletedField) != null

Coldairarrow commented 4 years ago

有个问题: 当我开启逻辑删除,但是临时需要访问已删除数据怎么办

Giant150 commented 4 years ago

有个问题: 当我开启逻辑删除,但是临时需要访问已删除数据怎么办

我也想到过这个问题。 但是如果这个删除是删除的了。就表示不可用。 如果还要用这个数据。就可能是程序BUG了。 看每个人怎么判定。 我现在是自己加了IEntityTypeConfiguration

在这里配置了HasQueryFilter, 但是这是特定的,不是全局的

Coldairarrow commented 4 years ago

image HasQueryFilter这种方式生成的SQL还是带有IN查询 顺便提下,我个人不建议用Include这种方式,而是用JOIN的方式