应无所住,而生其心
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

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

8140人阅读 2019/2/14 11:05 总访问:4699812 评论:0 收藏:0 手机
分类: .NET Core

 妹子情人节快乐~


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

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


1:删除方法     

 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            //#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.
            optionsBuilder.UseSqlServer(@"Server=.;Database=Food;Trusted_Connection=True;");
        }


2:添加方法 

      public FoodContext(DbContextOptions<FoodContext> options)
            : base(options)
        {
 
        }

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



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

   public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();
 
            services.AddDbContext<FoodContext>(option => {
                option.UseSqlServer("Data Source =.; Initial Catalog = EFCore_dbfirst; User ID = sa; Password = sa.123");
            });
            
        }

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


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

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

  private CNBlog_ServerContext ef;

  public ArticleDAL(CNBlog_ServerContext context) //通过依赖注入得到实例
  {
         ef = context;
  }

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

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

 private IArticleDAL _articledal;

 public RelatedArticleController(IArticleDAL articledal) //通过依赖注入得到数据访问层实例
 {
    _articledal = articledal;
 }

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



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





欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价