• PetaPoco在ASP.NET Core 2.2中使用注入方式访问数据库


    .Net Core中一个特别重要的特性就是依赖注入功能,那么我们在使用PetaPoco的时候是否也可以使用依赖注入特性呢?

    回答当然是可以的啦。使用方法(两种注入方式)如下

    services.AddScoped<IDatabase>(
        x =>
           {
               var connectionStrnig = Configuration["ConnectionStrings:MySQL:MvcMySQL"];
               var configuration = DatabaseConfiguration.Build().UsingConnectionString(connectionStrnig)
                                .UsingProvider<MariaDbDatabaseProvider>();
               return new PetaPocoMvcDBContext(configuration);
           });
     
    services.AddScoped<IDatabase, PetaPocoMvcDBContext>(
        (x) =>
             {
                 var connectionStrnig = Configuration["ConnectionStrings:MySQL:MvcMySQL"];
                 var configuration = DatabaseConfiguration.Build().UsingConnectionString(connectionStrnig)
                                .UsingProvider<MariaDbDatabaseProvider>();
                 return new PetaPocoMvcDBContext(configuration);
             });

    定义的PetaPocoMvcDBContext类:

    namespace PetaPocoEfCoreMvc.DBContext
    {
        using System.Data.Common;
     
        using PetaPoco;
        using PetaPoco.Core;
     
        public class PetaPocoMvcDBContext:Database
        {
            public PetaPocoMvcDBContext(DbConnection connection, IMapper defaultMapper = null)
                : base(connection, defaultMapper)
            {
            }
     
            public PetaPocoMvcDBContext(string connectionString, string providerName, IMapper defaultMapper = null)
                : base(connectionString, providerName, defaultMapper)
            {
            }
     
            public PetaPocoMvcDBContext(string connectionString, DbProviderFactory factory, IMapper defaultMapper = null)
                : base(connectionString, factory, defaultMapper)
            {
            }
     
            public PetaPocoMvcDBContext(string connectionString, IProvider provider, IMapper defaultMapper = null)
                : base(connectionString, provider, defaultMapper)
            {
            }
     
            public PetaPocoMvcDBContext(IDatabaseBuildConfiguration configuration)
                : base(configuration)
            {
            }
        }
    }

    appsetting.json中的数据库连接字符串:

    "ConnectionStrings": {
        "MySQL": {
          "MvcMySQL": "server=127.0.0.1;port=3306;uid=root;pwd=123456;database=WireCloud;",
          "provider": "MySql.Data.MySqlClient"
        }
      }

    添加UserService相关类:

    namespace PetaPocoEfCoreMvc.Service
    {
        using PetaPocoEfCoreMvc.Models;
    
        public interface IUserService
        {
            IEnumerable<User> GetAll();
        }
    }
    
    
    namespace PetaPocoEfCoreMvc.Service
    {
        using PetaPoco;
        using PetaPocoEfCoreMvc.Models;
    
        public class UserService:IUserService
        {
            private readonly IDatabase _database;
          //构造函数注入
            public UserService(IDatabase database)
            {
                _database = database;
            }
    
            public IEnumerable<User> GetAll()
            {
                return _database.Fetch<User>();
            }
        }
    }
    作者:芝麻科技
    出处:芝麻麻雀-Asp.Net学习之路
    技术:C++,C#
    向我打赏
    加我微信,聊一聊技术
  • 相关阅读:
    关于云计算:IaaS的四个误解和四个猜想 浪峰小园子
    国外10个优秀的免费轻量级CMS系统 浪峰小园子
    Win8下80端口被System占用,造成Apache不能启动的解决办法 浪峰小园子
    [转载]基于内存数据库的分布式数据库架构何坤 浪峰小园子
    php短域名转换为实际域名函数 浪峰小园子
    [转载]苹果公司与分工原理 浪峰小园子
    PHPer的等级划分
    简单的无限分类树
    转换字符串编码
    php开启虚拟域名功能
  • 原文地址:https://www.cnblogs.com/mzy-google/p/10769676.html
Copyright © 2020-2023  润新知