C# 是否有一种方法可以使用Azure函数进行Graphql.EntityFramework的依赖项注入?

C# 是否有一种方法可以使用Azure函数进行Graphql.EntityFramework的依赖项注入?,c#,entity-framework,graphql,azure-functions,azure-function-app,C#,Entity Framework,Graphql,Azure Functions,Azure Function App,我试图在Azure函数上使用DB优先的方法集成GrapQL.EntityFramework。我已经生成了所需的上下文、用户图、查询以及函数本身。目前,我的函数应用程序的启动文件存在问题,我将在其中使用依赖项注入 我在中的配置指南中尝试了这两个选项。我还尝试了一些代码片段,例如builder.Services.AddSingleton(typeof(IEfGraphQLService),instance=>{return new DBContext();}) 我的启动文件的当前状态 公共覆盖无效配

我试图在Azure函数上使用DB优先的方法集成
GrapQL.EntityFramework
。我已经生成了所需的上下文、用户图、查询以及函数本身。目前,我的函数应用程序的
启动
文件存在问题,我将在其中使用依赖项注入

我在中的配置指南中尝试了这两个选项。我还尝试了一些代码片段,例如
builder.Services.AddSingleton(typeof(IEfGraphQLService),instance=>{return new DBContext();})

我的启动文件的当前状态

公共覆盖无效配置(IFunctionsHostBuilder)
{
字符串连接=“”
builder.Services.AddTransient();
builder.Services.AddDbContext(options=>options.UseSqlServer(connection));
var optionBuilder=new DbContextOptionsBuilder();
optionBuilder.UseSqlServer(连接);
RegisterInContainer(builder.Services,null);
EfGraphQLConventions.RegisterConnectionTypesInContainer(builder.Services);
AddSingleton(typeof(IEfGraphQLService),instance=>{return new DBContext();});
}
此时此刻,我正试图让我的函数应用程序正常启动。我当前遇到此错误输出

用户:Microsoft.Azure.WebJobs.Host:索引方法“User”时出错。Microsoft.Azure.WebJobs.Host:无法将参数“service”绑定到类型IEfGraphQLService“1”。确保绑定支持该参数类型。如果您正在使用绑定扩展(例如Azure存储、ServiceBus、计时器等),请确保已在启动代码中调用扩展的注册方法(例如builder.AddAzureStorage()、builder.AddServiceBus()、builder.AddTimers()等)

可能值得打开一个,但我怀疑,无论图书馆试图在这里自动注册什么,都会抛出异常

EfGraphQLConventions.RegisterInContainer<DBContext>(builder.Services, null);
 EfGraphQLConventions.RegisterConnectionTypesInContainer(builder.Services);
EfGraphQLConventions.RegisterInContainer(builder.Services,null);
EfGraphQLConventions.RegisterConnectionTypesInContainer(builder.Services);
可能值得打开一个应用程序,但我怀疑,无论库试图在这里自动注册什么,都会抛出异常

EfGraphQLConventions.RegisterInContainer<DBContext>(builder.Services, null);
 EfGraphQLConventions.RegisterConnectionTypesInContainer(builder.Services);
EfGraphQLConventions.RegisterInContainer(builder.Services,null);
EfGraphQLConventions.RegisterConnectionTypesInContainer(builder.Services);

从外观上看,我可能不得不这样做,但在DI上似乎没有太多支持。我基本上是从c#应用程序的角度来研究函数应用程序。需要注意的是,函数DI并不是那里提供的ASP.NET DI管道的镜像。它使用相同的抽象和实现,但有时库会假定它将在ASP.NET中使用,并可能依赖于服务或重写在函数中不存在或无法重写的方面。因此,支持是存在的,但确实看到很多人在尝试使用在ASP.NET中工作的DI代码时遇到兼容问题。如果有一个将此库用作控制台应用程序的一部分的示例,那么它可能是一个更好的参考点。从外观上看,我可能不得不这样做,但在DI上似乎没有太多的支持。我基本上是从c#应用程序的角度来研究函数应用程序。需要注意的是,函数DI并不是那里提供的ASP.NET DI管道的镜像。它使用相同的抽象和实现,但有时库会假定它将在ASP.NET中使用,并可能依赖于服务或重写在函数中不存在或无法重写的方面。因此,支持是存在的,但确实看到很多人在尝试使用在ASP.NET中工作的DI代码时遇到兼容问题。如果有将此库用作控制台应用程序一部分的示例,则可能是更好的参考点。您正在尝试在此处匹配不同的类型
builder.Services.AddSingleton(typeof(IEfGraphQLService),instance=>{return new DBContext();})
DbContext
是否源自
IEfGraphQLService
?我非常怀疑。@Nkosi DB context不是从IEfGraphQLService派生的,它使用EntityFramework.Core DbContextOn删除最后一行时,我仍然收到相同的错误输出,您试图在这里匹配不同的类型
builder.Services.AddSingleton(typeof(IEfGraphQLService),instance=>{return new DBContext();})
DbContext
是否源自
IEfGraphQLService
?我非常怀疑。@Nkosi DB上下文不是从IEfGraphQLService派生的,它使用EntityFramework。Core DbContextOn删除最后一行时,我仍然收到相同的错误输出