IncludeFilter inGeneric Repository

c# entity-framework-6 entity-framework-plus linq

我也需要過濾器。我在所有表中都有記錄狀態。所以我需要根據這個過濾記錄。為了適應這種情況,我使用的是Z.EntityFramework.PlusIncludeFilter方法。

我的通用數據代碼如下;

    public async Task<T> GetAsync(int id, params Expression<Func<T, object>>[] includes)
    {
        var query = _context.Set<T>().AsQueryable(); //.FindAsync(id);

        if (includes.Length > 0)
        {
            query = includes.Aggregate(query,
              (current, include) => current.IncludeFilter(include));
        }
        var item = await query.FirstOrDefaultAsync(x => x.Id == id);
        return item;
    }

當我包括來自調用方法(業務類)的條件時,其工作正常。但我不想把這些條件包括在所有地方。所以我需要改變這個方法來包含where條件。

請幫幫我。我沒有在include參數中獲得任何擴展名

注意:我需要在每個包含中包含條件。

熱門答案

理論上,您可以使所有實體類型實現一個帶有RecordStatus屬性的接口( IRecord ?)。

然後你可以將include參數更改為Expression<Func<T, IRecord>>[]

棘手的部分是根據你給出的那些構造新的include表達式,在每個表達式上添加&& r.RecordStatus == "whatever" 。做類似的事情的代碼可能有點難看,但它應該是可能的。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因