Cha*_*era 3 c# asp.net entity-framework-core asp.net-core
我在单个解决方案中有一个 ASP.NET Core Web 应用程序和一个类库项目。我的目的是仅使用 .NET Core Web 应用程序作为 Web 应用程序,而不是用作数据层。我创建了单独的类库项目,其唯一目的是创建与数据库交互的实体类。我已将实体框架核心库包含到类库项目中。
如何包含多个配置文件(基于环境,例如appsettings.development.json等appsettings.production.json)并根据我设置的环境读取这些值?
如何DbContext在类库中注册该类,就像在下面的 ASP.NET Core Web 应用程序中一样?
Startup这是我的 ASP.NET Core Web 应用程序类的片段
public void ConfigureServices(IServiceCollection services)
{
var connString = Configuration.GetConntectionString("ConnectionStringKey");
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connString));
// other service configuration
}
Run Code Online (Sandbox Code Playgroud)
非常感谢您的意见。
将这些包添加到您的类库中。
<PackageReference Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="6.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0" />
Run Code Online (Sandbox Code Playgroud)
创建静态类来注册DbContext
public static class ISserviceCollectionExtension
{
public static IServiceCollection configureservice(this IServiceCollection service, IConfiguration Configuration)
{
//access the appsetting json file in your WebApplication File
string filePath = @"C:\your Web App path\appsettings.json";
Configuration = new ConfigurationBuilder()
.SetBasePath(Path.GetDirectoryName(filePath))
.AddJsonFile("appSettings.json")
.Build();
service.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("xxx")));
return service;
}
}
Run Code Online (Sandbox Code Playgroud)
日期上下文
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
public DbSet<xx> xx{ get; set; }
//.......
}
Run Code Online (Sandbox Code Playgroud)
当你添加迁移时,你可能会得到这样的错误:
现在您需要创建 DbContextFactory 类
public class AppDbContextFactory : IDesignTimeDbContextFactory<AppDbContext>
{
public AppDbContextFactory()
{
}
private readonly IConfiguration Configuration;
public AppDbContextFactory(IConfiguration configuration)
{
Configuration = configuration;
}
public AppDbContext CreateDbContext(string[] args)
{
string filePath = @"C:\Users\Administrator\source\repos\CheckPoint\NullMVC\appsettings.json";
IConfiguration Configuration = new ConfigurationBuilder()
.SetBasePath(Path.GetDirectoryName(filePath))
.AddJsonFile("appSettings.json")
.Build();
var optionsBuilder = new DbContextOptionsBuilder<AppDbContext>();
optionsBuilder.UseSqlServer(Configuration.GetConnectionString("xxx"));
return new AppDbContext(optionsBuilder.Options);
}
}
Run Code Online (Sandbox Code Playgroud)
最后,您可以在类库中成功注册并迁移DBContext。
第一个问题,你可以参考这个问题。