我有一个 .NET Core 3.0 类库。这是我第一次使用 .NET Core
我想连接到数据库。
https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-strings显示了如何做到这一点。
https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.configuration.configurationextensions.getconnectionstring?view=dotnet-plat-ext-3.1显示了Microsoft.Extensions.Configuration命名空间中存在的方法
我无法访问它。
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration; //no underlines and imported via Nuget
namespace Core.Cms.DAL
{
public class Entities : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ optionsBuilder.UseSqlServer(Microsoft.Extensions.Configuration.GetConnectionString(ConnectionString.SqlServerExpress));
}
}
}
Run Code Online (Sandbox Code Playgroud)
截屏
为什么我没有Microsoft.Extensions.Configuration.GetConnectionString()可用的方法?
编辑
重新启动骑手 - 同样的问题
Entities.cs(17, 45):[CS0234] 命名空间“Microsoft.Extensions.Configuration”中不存在类型或命名空间名称“GetConnectionString”(您是否缺少程序集引用?)
小智 28
在 .NET 6 中,您现在可以像这样使用 builder.Configuration.GetConnectionString
builder.Services.AddDbContext<ApplicationDBContext>(options =>
options.UseSqlServer(
builder.Configuration.GetConnectionString("DefaultConnection")
));
Run Code Online (Sandbox Code Playgroud)
您应该使用该IConfiguration接口。您可以DI像这样访问配置表单
private readonly IConfiguration _configuration;
public Entities(IConfiguration configuration)
{
_configuration = configuration
}
Run Code Online (Sandbox Code Playgroud)
然后使用_configuration.GetConnectionString(ConnectionString.SqlServerExpress)代替Microsoft.Extensions.Configuration.GetConnectionString()
optionsBuilder.UseSqlServer(_configuration.GetConnectionString(ConnectionString.SqlServerExpress));
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 Asp.Net Core Web 应用程序,这是在启动类中配置 DbContext 的更好方法
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; set; }
Run Code Online (Sandbox Code Playgroud)
services.AddDbContext<Entities>(options =>
{
options.UseSqlServer(Configuration.GetConnectionString(ConnectionString.SqlServerExpress));
});
Run Code Online (Sandbox Code Playgroud)
更新
如果您不使用DI您可以IConfiguration手动访问。
首先你必须安装这个包
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.Configuration.FileExtensions
然后构建 IConfiguration
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json", true,true)
.Build();
optionsBuilder.UseSqlServer(configuration.GetConnectionString(ConnectionString.SqlServerExpress));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |