'值不能为空。 (参数 'connectionString')' - Azure 函数 - Entity Framework 核心
'Value cannot be null. (Parameter 'connectionString')' - Azure Function - Entity Framework Core
我正在为此苦苦挣扎....如果可以请帮忙
这在我的启动文件中(依赖注入)
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddDbContext<CatsDBContext>(
options =>
{
const string Name = "SqlConnectionString";
options.UseSqlServer(Configuration.GetConnectionString(Name));
});
这是我的local.settings.json
{
"IsEncrypted": false, "Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet" },
"ConnectionStrings": {
"SqlConnectionString": "Server=tcp:animal77.database.windows.net,1433;Initial Catalog=CatsDB;Persist Security Info=False;User ID=j;Password=A;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;"
} }
这是我的背景
namespace Shizzle.Models
{
public partial class CatsDBContext : DbContext
{
public CatsDBContext()
{
}
public CatsDBContext(DbContextOptions<CatsDBContext> options)
: base(options)
{
}
public virtual DbSet<Cats> Cats { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
#warning
// optionsBuilder.UseSqlServer("Server=tcp:animal77.database.windows.net,1433;Initial Catalog=CatsDB;Persist Security Info=False;User ID=j;Password='';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;");
}
这是我希望它对数据库执行的函数
namespace Shizzle
{
public class Function1
{
private readonly CatsDBContext _applicationDbContext;
public Function1(CatsDBContext applicationDbContext)
{
_applicationDbContext = applicationDbContext;
}
[FunctionName("Function1")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
var demo = new Cats { Name = "Jason", Id = 5 };
_applicationDbContext.Cats.Add(demo);
_applicationDbContext.SaveChanges();
这是我的启动 DI class :
[assembly: FunctionsStartup(typeof(Startup))]
namespace Shizzle
{
class Startup : FunctionsStartup
{
public IConfiguration Configuration { get; }
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddDbContext<CatsDBContext>(
options =>
{
const string Name = "SqlConnectionString";
options.UseSqlServer(Configuration.GetConnectionString(Name));
});
}
}
}
我在 visual studio 2019
中收到此错误
谁能帮忙 - 这快把我逼疯了。
您缺少构建配置的逻辑
我认为最好的方法是同时覆盖 ConfigureAppConfiguration
public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
{
Configuration = builder.ConfigurationBuilder.Build();
}
但您也可以在 Configure
函数中添加此内容
我正在为此苦苦挣扎....如果可以请帮忙
这在我的启动文件中(依赖注入)
public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddDbContext<CatsDBContext>( options => { const string Name = "SqlConnectionString"; options.UseSqlServer(Configuration.GetConnectionString(Name)); });
这是我的local.settings.json
{
"IsEncrypted": false, "Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet" },
"ConnectionStrings": {
"SqlConnectionString": "Server=tcp:animal77.database.windows.net,1433;Initial Catalog=CatsDB;Persist Security Info=False;User ID=j;Password=A;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;"
} }
这是我的背景
namespace Shizzle.Models
{
public partial class CatsDBContext : DbContext
{
public CatsDBContext()
{
}
public CatsDBContext(DbContextOptions<CatsDBContext> options)
: base(options)
{
}
public virtual DbSet<Cats> Cats { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
#warning
// optionsBuilder.UseSqlServer("Server=tcp:animal77.database.windows.net,1433;Initial Catalog=CatsDB;Persist Security Info=False;User ID=j;Password='';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;");
}
这是我希望它对数据库执行的函数
namespace Shizzle
{
public class Function1
{
private readonly CatsDBContext _applicationDbContext;
public Function1(CatsDBContext applicationDbContext)
{
_applicationDbContext = applicationDbContext;
}
[FunctionName("Function1")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
var demo = new Cats { Name = "Jason", Id = 5 };
_applicationDbContext.Cats.Add(demo);
_applicationDbContext.SaveChanges();
这是我的启动 DI class :
[assembly: FunctionsStartup(typeof(Startup))]
namespace Shizzle
{
class Startup : FunctionsStartup
{
public IConfiguration Configuration { get; }
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddDbContext<CatsDBContext>(
options =>
{
const string Name = "SqlConnectionString";
options.UseSqlServer(Configuration.GetConnectionString(Name));
});
}
}
}
我在 visual studio 2019
中收到此错误谁能帮忙 - 这快把我逼疯了。
您缺少构建配置的逻辑
我认为最好的方法是同时覆盖 ConfigureAppConfiguration
public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
{
Configuration = builder.ConfigurationBuilder.Build();
}
但您也可以在 Configure
函数中添加此内容