Net Core使用依赖注入来装载EF的上下文对象

.net core中用了不少的依赖注入,官方文档中也推荐使用。

 这样使用依赖注入来管理ef对象,还是比较科学,比如想要单利就很简单了

1:删除方法     

 

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

        {

  1.             //#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
  2.             optionsBuilder.UseSqlServer(@"Server=.;Database=Food;Trusted_Connection=True;");
  3.         }

2:添加方法 

 
  1.       public FoodContext(DbContextOptions<FoodContext> options)
  2.             : base(options)
  3.         {
  4.  
  5.         }

添加的是一个构造函数用于构造函数注入(这个方法在新版的时候会自动加入)

3:在startup.cs的ConfigureServices方法中添加依赖注入    

 
  1.    public void ConfigureServices(IServiceCollection services)
  2.         {
  3.             // Add framework services.
  4.             services.AddMvc();
  5.  
  6.             services.AddDbContext<FoodContext>(option => {
  7.                 option.UseSqlServer("Data Source =.; Initial Catalog = EFCore_dbfirst; User ID = sa; Password = sa.123");
  8.             });
  9.             
  10.         }

注:usersqlserver是一个扩展方法,需要添加ef core的引用using Microsoft.EntityFrameworkCore;       

4:使用的时候就不能直接去实例化了否则会报错找不到上下文对象

应该使用注入的方式去获取ef对象,例如构造函数注入

 
  1.   private CNBlog_ServerContext ef;
  2.   public ArticleDAL(CNBlog_ServerContext context) //通过依赖注入得到实例
  3.   {
  4.          ef = context;
  5.   }

但是如果你这个DAL类是直接实例化的ef也无法被成功的注入,因为你直接实例化调用的是无参的构造函数,

没有为他注入,所以我们应该使用依赖注入来注入对应的DAL类

 
  1.  private IArticleDAL _articledal;
  2.  public RelatedArticleController(IArticleDAL articledal) //通过依赖注入得到数据访问层实例
  3.  {
  4.     _articledal = articledal;
  5.  }

这样依赖注入在注入DAL层对应的类的时候发现该类还有一个需要注入的对象,就会被他自动注入了

当然注入的方式除了构造函数注入我们还可以使用其他的注入方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
依赖注入(Dependency Injection,DI)是一种设计模式,其目的是实现对象之间的解耦,提高代码的可测试性和可维护性。在 .NET Core 中,依赖注入是一个内置的功能,可以通过 ASP.NET Core 中的内置容器或第三方容器库来实现。以下是在 .NET Core使用依赖注入的步骤: 1. 定义接口和实现类 首先,定义需要注入的接口和实现类。例如: ```csharp public interface IMyService { void DoSomething(); } public class MyService : IMyService { public void DoSomething() { // 实现具体逻辑 } } ``` 2. 注册依赖关系 然后,在应用程序的启动代码中,注册接口和实现类之间的依赖关系。例如: ```csharp public void ConfigureServices(IServiceCollection services) { services.AddScoped<IMyService, MyService>(); } ``` 上述代码使用 `AddScoped` 方法将 `IMyService` 接口与 `MyService` 实现类进行了注册。`AddScoped` 方法表示每个请求范围内都会创建一个新的实例。 3. 使用依赖注入 现在,可以在需要使用 `IMyService` 的地方进行依赖注入。例如: ```csharp public class MyController : Controller { private readonly IMyService _myService; public MyController(IMyService myService) { _myService = myService; } public IActionResult Index() { _myService.DoSomething(); return View(); } } ``` 上述代码中,`MyController` 类在构造函数中注入了 `IMyService` 接口,并在 `Index` 方法中使用它。 通过以上步骤,就可以在 .NET Core使用依赖注入了。值得注意的是,ASP.NET Core 中的内置容器支持多种生命周期选项,如 `AddSingleton`、`AddTransient` 和 `AddScoped` 等,可以根据实际需求来选择不同的生命周期选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值