【发布时间】:2022-06-10 19:27:25
【问题描述】:
所以我有一个 Azure 函数应用程序,我想从那里连接到数据库。我为此使用依赖注入并创建服务,但我无法连接到数据库。我将展示我的一些代码。
public class Program
{
public static void Main()
{
System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
var host = new HostBuilder()
.ConfigureFunctionsWorkerDefaults()
.ConfigureServices(s =>
{
s.AddDbContext<MyDbContext>(o =>
o.UseSqlServer("database_connection"));
})
.Build();
host.Run();
}
}
这是我的 Azure Function 项目中的代码。这是我的功能项目的包
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.Http" Version="3.0.13" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Extensions.ServiceBus" Version="4.2.1" />
<PackageReference Include="Microsoft.Azure.Functions.Worker.Sdk" Version="1.3.0" OutputItemType="Analyzer" />
<PackageReference Include="Microsoft.Azure.Functions.Worker" Version="1.6.0" />
现在我有另一个项目,我的数据层,其中有我的 MyDbContext。这是这个的代码
public partial class MyDbContext: DbContext
{
public static String connString = null;
public MyDbContext() { }
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
var opt = options.FindExtension<SqlServerOptionsExtension>();
connString = opt.ConnectionString;
}
public static MyDbContextGetNewInstance()
{
var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionsBuilder.EnableSensitiveDataLogging();
optionsBuilder.UseSqlServer(connString);
return new MyDbContext(optionsBuilder.Options);
}
}
我的 api 项目中有相同的代码,并且与数据库的连接工作正常。但从我的天蓝色功能来看,它没有。我的经验是,如果我在我的 azure 函数的构造函数中设置一个断点,它不会被调用,那就是我的 connString 为空。
我错过了什么吗?
【问题讨论】:
标签: azure entity-framework asp.net-core dependency-injection azure-functions