第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

擴展(替代)存儲庫設(shè)計模式?

擴展(替代)存儲庫設(shè)計模式?

C#
精慕HU 2022-12-24 14:15:29
我正在 ASP.NET MVC 中開發(fā)一個項目。我想在應(yīng)用程序的數(shù)據(jù)訪問層和業(yè)務(wù)邏輯層之間創(chuàng)建一個抽象層。我一直在使用存儲庫和工作單元?;仡櫼幌拢诖四J街?,創(chuàng)建了一個通用存儲庫和許多特定存儲庫。我在這個項目中遇到的問題是我需要另一個存儲庫中某個特定存儲庫的方法。例如,我有一個產(chǎn)品和子產(chǎn)品存儲庫。我想在 Product 方法中使用 Subproduct 方法,而不是每次都為 Subproduct 重寫 LINQ 查詢。有沒有辦法擴展存儲庫設(shè)計模式的功能,或者我必須使用另一種設(shè)計模式?public class ProductSubcategoryRepository : Repository<ProductSubcategory>, IProductSubcategoryRepository{    public ProductSubcategoryRepository(DbContext context) : base(context)    {    }    public IEnumerable<ProductSubcategory> CheckSomeCondition()    {        // LINQ to check some condition based on product subcategory    }}public class ProductCategoryRepository : Repository<ProductCategory>, IProductCategoryRepository{    public ProductCategoryRepository(DbContext context) : base(context)    {    }    public IEnumerable<ProductCategory> GetProductCategoriesBeforeDate()    {        // Repeated LINQ to check some condition based on product subcategory         // (I am looking for a way to call the same method of ProductSubCategory calss)        // LINQ To return List of product category if the previous query is true    }}
查看完整描述

2 回答

?
慕森王

TA貢獻1777條經(jīng)驗 獲得超3個贊

你已經(jīng)在你的問題中說過你有業(yè)務(wù)邏輯層。那是管理這些東西的最佳場所。

因此,您不會在另一個存儲庫中調(diào)用一個存儲庫。相反,您可以通過 BLL 的一種方法調(diào)用兩個存儲庫來實現(xiàn)目標(biāo)。希望您的 UoW 暴露于 BLL。這樣,在相同的 UoW 范圍內(nèi),您可以執(zhí)行這兩個操作。

這不僅限于Get記錄。這可以進一步擴展到GetModify-Update或其他任何內(nèi)容。

我不確定你是做什么的CheckSomeCondition。它只是一個 Predicate 就可以了。如果它是某些業(yè)務(wù)邏輯的一部分,更好的方法是如上所述將其轉(zhuǎn)移到 BLL。



查看完整回答
反對 回復(fù) 2022-12-24
?
慕村9548890

TA貢獻1884條經(jīng)驗 獲得超4個贊

最直接的方法是在其構(gòu)造函數(shù)ProductCategoryRepository中創(chuàng)建一個實例:ProductSubcategoryRepository


public class ProductCategoryRepository : Repository<ProductCategory>, IProductCategoryRepository

{

    private ProductSubcategoryRepository subRepo;

    public ProductCategoryRepository(DbContext context) : base(context)

    {

        subRepo = new ProductSubcategoryRepository(context);

    }


    public IEnumerable<ProductCategory> GetProductCategoriesBeforeDate()

    {

        // call subRepo

    }

}

如果你已經(jīng)有一個ProductSubcategoryRepository你可以注入它的實例:


public ProductCategoryRepository(DbContext context, ProductSubcategoryRepository subRepo) : base(context)

{

    this.subRepo = subRepo;

}


查看完整回答
反對 回復(fù) 2022-12-24
  • 2 回答
  • 0 關(guān)注
  • 103 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號