asp.net核心web api,如何注入连接字符串
这是我的asp.net核心项目结构 1-ASP.NET核心Web API(包含aspsettings.json) 2-SERVICES项目(服务项目中的Web API调用方法)asp.net核心web api,如何注入连接字符串,asp.net,dependency-injection,asp.net-core,asp.net-core-2.0,Asp.net,Dependency Injection,Asp.net Core,Asp.net Core 2.0,这是我的asp.net核心项目结构 1-ASP.NET核心Web API(包含aspsettings.json) 2-SERVICES项目(服务项目中的Web API调用方法) 3-存储库项目(来自存储库项目和存储库项目的服务调用方法包括所有模型所在的数据项目) 4-数据项目,其中首先包含所有带有代码的模型 public class TtEntities : DbContext { public virtual DbSet<RoomMessage> Room
3-存储库项目(来自存储库项目和存储库项目的服务调用方法包括所有模型所在的数据项目)
4-数据项目,其中首先包含所有带有代码的模型
public class TtEntities : DbContext
{
public virtual DbSet<RoomMessage> RoomMessage { get; set; }
public virtual DbSet<UserRoom> UserRoom { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(local)\SQLEXPRESS;Database=testdb;Trusted_Connection=True;");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
....
公共类注意事项:DbContext
{
公共虚拟数据库集RoomMessage{get;set;}
公共虚拟数据库集用户室{get;set;}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
optionsBuilder.UseSqlServer(@“服务器=(本地)\SQLEXPRESS;数据库=testdb;可信连接=True;”;
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
....
如您所见,我在配置方法上硬编码了连接,这肯定不是最佳实践
是否有方法从Web API项目的配置文件传递连接字符串
如果我们从web api项目的文件aspsettings.json传递连接,更新数据库命令是否仍然有效
非常感谢DI完美地解决了这个问题,.NET Core 2.0拥有Microsoft DI,它提供了使用DI的清晰体验 哦,让我们开始吧(我认为数据项目和存储库项目应该是一个) 从存储库项目 将您的REPOSITORYClass更改为
public class REPOSITORYClass
{
private readonly TtEntities _db;
public REPOSITORYClass (TtEntities db){
_db = db;
}
//some your staff of REPOSITORYClass thats uses _db
}
现在转到服务项目
让我们更改一些使用REPOSITORYClass的服务
public class SomeService
{
private readonly REPOSITORYClass _repo;
public SomeService (REPOSITORYClass repo){
_repo = repo;
}
//other staff of SomeService thats uses _repo
}
然后转到ASP.NET核心Web API启动文件并添加到
公共void配置服务
并从您的服务中使用您想要的任何东西,该服务注入了repo的deps和具有连接的注入db实体
就这些
PS还建议阅读此DI完美地解决了此问题,.NET Core 2.0拥有Microsoft DI,它提供了使用DI的清晰体验 哦,让我们开始吧(我认为数据项目和存储库项目应该是一个) 从存储库项目 将您的REPOSITORYClass更改为
public class REPOSITORYClass
{
private readonly TtEntities _db;
public REPOSITORYClass (TtEntities db){
_db = db;
}
//some your staff of REPOSITORYClass thats uses _db
}
现在转到服务项目
让我们更改一些使用REPOSITORYClass的服务
public class SomeService
{
private readonly REPOSITORYClass _repo;
public SomeService (REPOSITORYClass repo){
_repo = repo;
}
//other staff of SomeService thats uses _repo
}
然后转到ASP.NET核心Web API启动文件并添加到
公共void配置服务
并从您的服务中使用您想要的任何东西,该服务注入了repo的deps和具有连接的注入db实体
就这些
PS还建议阅读此一个简单的解决方案如下:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
}
一个简单的解决方案如下:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
}
能否提供在ASP.NET核心Web API中创建注意事项实例的代码?是否使用DI?能否提供在ASP.NET核心Web API中创建注意事项实例的代码?是否使用DI?
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-WebApplication5;"
}
}