core里的efCore上去连接mysql我们需要测试一下。core里的efCore上去连接mysql我们要测试一下。

回目录

回目录

以.net frameworks的ef里连续mysql我们既测试通过了,而以dotnet
core里的efCore上去连接mysql我们得测试一下,并且在测试过程中冒出了一些问题,当然最终也是缓解了,下面总结一下,分享给大家!

在.net frameworks的ef里接连mysql我们早已测试通过了,而在dotnet
core里的efCore上去连接mysql我们要测试一下,并且在测试过程被冒出了一些问题,当然最终吧是化解了,下面总结一下,分享给大家!

  1. mysql项目的借助包
  2. 数量上下文和连接串
  3. 数存储
  4. 丰富模块扩展
  5. 业务层注入
  6. 业务实现
  1. mysql项目之因包
  2. 数据上下文和连续串
  3. 数量存储
  4. 添加模块扩展
  5. 业务层注入
  6. 工作实现

mysql项目之负包

mysql项目的凭包

  1. Microsoft.EntityFrameworkCore
  2. MySql.Data.EntityFrameworkCore
  1. Microsoft.EntityFrameworkCore
  2. MySql.Data.EntityFrameworkCore

数据上下文和连接串

数量上下文和连续串

对于mysql的上下文和用sql没什么两类,需要小心的是如抬高的SSL的否定,否则还要会起那个出

对mysql的上下文和运用sql没什么两类,需要注意的凡要丰富的SSL的否认,否则还要会生出酷出

MySql.Data.MySqlClient.MySqlException: The
host localhost does not support SSL connections.

MySql.Data.MySqlClient.MySqlException: The
host localhost does not support SSL connections.

    public partial class MySqlERPContext : DbContext, IERPContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySQL(@"Server=localhost;database=ef;uid=root;pwd=root;SslMode=None");
            base.OnConfiguring(optionsBuilder);
        }
        public DbSet<system_users> system_users { get; set; }
        public DbSet<User> Users { set; get; }
    }
    public partial class MySqlERPContext : DbContext, IERPContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseMySQL(@"Server=localhost;database=ef;uid=root;pwd=root;SslMode=None");
            base.OnConfiguring(optionsBuilder);
        }
        public DbSet<system_users> system_users { get; set; }
        public DbSet<User> Users { set; get; }
    }

数码存储

多少存储

实现连续基础设备里之EFRepository就足以了,我们需要吗仓储传递一个数额上下文进来,就是者定义的Mysql的上下文对象,这样您的储存就足以操作是上下文了.

心想事成持续基础设备里之EFRepository就可以了,我们需要呢仓储传递一个数据上下文进来,就是上面定义的Mysql的上下文对象,这样您的储存就可操作是上下文了.

  public class ERPRepository<T> : EFRepository<T> where T : class
    {
        public ERPRepository() : base(new MySqlERPContext()) { }
    }
  public class ERPRepository<T> : EFRepository<T> where T : class
    {
        public ERPRepository() : base(new MySqlERPContext()) { }
    }

加上模块扩展

累加模块扩展

咱俩基础设备里出局部早就实现的功用,我们会做成扩展方法,方便为工作体系的动,而同事情相关的对象,如工作仓储,业务及下文可以以工作系统添加扩展,方法后期的流入工作,一般的业务扩展代码如下

咱基础设备里发出局部已实现之效益,我们会做成扩展方法,方便为工作系统的以,而同工作相关的对象,如工作仓储,业务及下文可以以工作系统添加扩展,方法后期的流入工作,一般的工作扩展代码如下

    /// <summary>
    /// 对于当前项目的模块化扩展
    /// </summary>
    public static class ModuleExtensions
    {
        /// <summary>
        /// 注册一个数据仓库
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public static ModuleManager UseErpRepository(this ModuleManager configuration)
        {
            configuration.RegisterGenericModule(
                typeof(IRepository<>),
                typeof(ERPRepository<>));
            return configuration;
        }
        /// <summary>
        /// 注册一个数据上下文
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public static ModuleManager UseErpContext(this ModuleManager configuration)
        {
            configuration.RegisterModule<IERPContext, MySqlERPContext>();
            return configuration;
        }
    }
    /// <summary>
    /// 对于当前项目的模块化扩展
    /// </summary>
    public static class ModuleExtensions
    {
        /// <summary>
        /// 注册一个数据仓库
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public static ModuleManager UseErpRepository(this ModuleManager configuration)
        {
            configuration.RegisterGenericModule(
                typeof(IRepository<>),
                typeof(ERPRepository<>));
            return configuration;
        }
        /// <summary>
        /// 注册一个数据上下文
        /// </summary>
        /// <param name="configuration"></param>
        /// <returns></returns>
        public static ModuleManager UseErpContext(this ModuleManager configuration)
        {
            configuration.RegisterModule<IERPContext, MySqlERPContext>();
            return configuration;
        }
    }

业务层注入

业务层注入

模块的扩展实现后,就是当业务系统初始化时注入其,实现啊种方法就是失登记哪里,一般以global或者startup里去实现注入功能.

模块的扩张实现后,就是当事情体系初始化时注入其,实现啊种方法就是错过登记哪里,一般以global或者startup里去落实注入功能.

        //注册模块
            ModuleManager.Create()
                         .UseAutofac()
                         .UseESBIoC()
                         .UseErpContext()
                         .UseErpRepository();
        //注册模块
            ModuleManager.Create()
                         .UseAutofac()
                         .UseESBIoC()
                         .UseErpContext()
                         .UseErpRepository();

业务实现

事务实现

可直接由模块里拿相应之仓储取出来,然后实施相应的curd操作即可

好直接打模块里拿相应之贮存取下,然后实施相应的curd操作即可

       ModuleManager.Resolve<IRepository<User>>().Insert(new Api.User
            {
                Name = "two"
            });
       ModuleManager.Resolve<IRepository<User>>().Insert(new Api.User
            {
                Name = "two"
            });

诸如此类我们在dotnet
core里通过efcore去操作mysql数据库就到位了,需要小心的是,在mysql连接串中,一定要是抬高SslMode=None以此特性,否则会启用ssl链接!

诸如此类咱们以dotnet
core里通过efcore去操作mysql数据库就好了,需要留意的是,在mysql连接串中,一定要是抬高SslMode=None夫特性,否则会启用ssl链接!

感谢各位阅读!

感各位阅读!

回目录

回目录