我正在嘗試實作一個基本的管道和過濾器模式并在 LinqPad 5 中對其進行測驗。
包含擴展方法的類如下所示:
public static class MyExtensions
{
public static IQueryable<PortfolioSection> AreNotDeleted(this IQueryable<PortfolioSection> portfolioSections)
{
return portfolioSections.Where(portfolioSection => portfolioSection.IsDeleted == false);
}
public static int AddMe(this int number, int newNumber){
return number newNumber;
}
}
在 linqpad 的主要部分中,我執行以下操作:
void Main()
{
PortfolioSections.AreNotDeleted().Dump();
}
我還嘗試添加 AsQueryable 以確認這不是問題:
void Main()
{
PortfolioSections.AsQueryable().AreNotDeleted().Dump();
}
在這兩種情況下,我都會遇到例外:
CS1929“DbSet”不包含“AreNotDeleted”的定義,并且最佳擴展方法多載“MyExtensions.AreNotDeleted(IQueryable)”需要“IQueryable”型別的接收器
我正在關注這篇文章以了解有關管道和過濾器模式的更多資訊,最初在我的 c# 專案中進行了嘗試,但是當我發現在包含擴展方法 AndAreNotDeleted 時查詢結果沒有改變時,我切換到了 LinqPad。在我的專案中,雖然沒有例外,但另一方面,LinqPad 拋出了上面的例外。
有什么想法我哪里出錯了嗎?
uj5u.com熱心網友回復:
我在 Linpad 中的連接型別基于我的專案的持久性庫,其中包含 DbContext。我最初復制了代表資料物體的所有域類,忘記了我只需要按 F4 并添加一個指向包含域類的庫的 using 陳述句。這似乎解決了我在 Linqpad 中的所有問題,我現在可以實作該模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/466462.html
標籤:C# 实体框架 存储库模式 linqpad 管道过滤器
