[英]Connect to Entity Framework Core in .NET 3.1 Azure Function Project Startup.cs
我正在尝试对 Azure 中的数据库使用实体框架。 我在 local.settings.json 中存储了一个连接字符串,但是我从 Startup.cs 引用它的所有尝试都失败了。
我能够使用 IConfiguration DI 访问我的连接字符串到 function class 并且我可以使用 SQL 命令成功访问数据库,使用如下配置:
string connectionString = _configuration.GetConnectionString("cpni");
所以我知道连接字符串正在工作并且我可以访问它。
如果我尝试在Startup class 上将DI 与 IConfiguration 一起使用,编译器不会给我任何错误,但是一旦它在调试中运行,我就会开始收到以下错误:
System.Private.CoreLib:没有为“CPNI_Functions.Startup”类型定义无参数构造函数。
这是我目前成功使用硬编码connectionString 的内容(因为将 DI 与 IConfiguration 一起使用不起作用):
builder.Services.AddDbContext<CpniContext>(
options => options.UseSqlServer(connectionString));
这使我可以通过 EF 使用数据库。 我想使用的是它的某种组合和类似的东西:
builder.Services.AddDbContext<CpniContext>(/*options need to go here?*/)
.Configure<IConfiguration>((configuration) =>
{
//Or are options supposed to go here somewhere, or be bound here with some sort of .Bind()?
configuration.GetConnectionString("cpni");
});
如果这没有意义或不起作用,那么请让我知道设置此 DI 的推荐方法是什么。 如果可能,我想避免通过 ConfigurationManager 使用配置查找。
作为参考,这里是完整的 Startup.cs,这是有效的:
using CPNI_Functions.Data;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
[assembly: FunctionsStartup(typeof(CPNI_Functions.Startup))]
namespace CPNI_Functions
{
class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
string connectionString = "myconnectionstringhere";
builder.Services.AddDbContext<CpniContext>(
options => options.UseSqlServer(connectionString));
}
/*
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<CpniContext>(configuration.GetConnectionString("cpni"));
}*/
}
}
我是核心新手,我是 Azure 函数的新手,所以请原谅我对此的无知。 预先感谢您的帮助。
对于 Azure function 应用程序,您可以尝试添加 NuGet ZEFE90A8E604A7F7640E8Z8D03A
System.Configuration.ConfigurationManager
local.settings.json:
{
"ConnectionStrings": {
"cpni": "[ConnectionStringDetails]"
}
}
然后希望您应该能够使用 ConfigurationManager 进行访问。
services.AddDbContext<CpniContext>(
options => options.UseSqlServer(ConfigurationManager.ConnectionStrings["cpni"].ConnectionString));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.