[英]In c# 9, How To Declare a Flexible Interface?
我正在使用 Entity Framework Core,並希望有兩個不同的 SpeakerQueries 實現,每個實現都使用不同的 EF Core 數據上下文。
我原來的 class 只包含一個數據上下文,但我已經擴展它現在包含兩個。
這是我的 c# 接口定義如下:
public interface ISpeakerQueries
{
IQueryable<Speaker> GetSpeakers(
[ScopedService] ApplicationDbContext context, [ScopedService] ApplicationDbContextAlt contextAlt);
...
我真的只想用每種方法調用一個數據上下文,但不確定如何定義我的接口以允許這種情況發生。
換句話說,我希望 GetSpeakers 的具體實現是
public class SpeakerQueriesAlt : ISpeakerQueries
{
[UseApplicationDbContextAlt]
[UsePaging]
public IQueryable<Speaker> GetSpeakers(
[ScopedService] ApplicationDbContextAlt context)
{ ...
或者
public class SpeakerQueries : ISpeakerQueries
{
[UseApplicationDbContext]
[UsePaging]
public IQueryable<Speaker> GetSpeakers(
[ScopedService] ApplicationDbContext context)
{ ...
我想我可以做到這一點,但不確定我應該如何聲明接口。 我在頂部聲明的接口不起作用,因為它需要兩個參數而不是一個。
你在尋找 HotChocolate 和他們的車間樣品嗎? 如果沒有,則忽略 rest :)
使用方法注入是將服務注入 HotChocolate 庫執行的正確方法。
我試圖了解要達到的目標是什么? 您是否嘗試 (A) 創建兩個查詢端點,它們將使用不同的 dbcontext 並且只返回該特定上下文的數據? 或者您是否嘗試創建 (B) 一個查詢,該查詢將返回兩個 dbcontexts 的所有發言者?
如果是 A,那么我認為您可以輕松地從中提取接口,但您可能必須給它們兩個不同的名稱。
如果是 B,那么我將創建一個注入兩個不同上下文的服務,並負責將結果連接在一起。 或者您可以創建自己的中間件/管道,或者甚至更好地創建 3 個 graphql 服務器,其中服務器 A 從上下文 1 返回數據,服務器 B 從上下文 2 返回數據,您的服務器 C 使用模式拼接。
如前所述,如果這不是 HC 和 Graphql 就忽略我的回答
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.