DotNetCore跨平台~EFCore连接Mysql的方法

回目录

发觉Rexsee时,他都同年多并未创新了了,最后版本是2012年的。

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

 

  1. mysql项目之倚重包
  2. 数据上下文和连串
  3. 数量存储
  4. 加上模块扩展
  5. 业务层注入
  6. 事情实现

他的贯彻思路是透过Android自带的Java – Javascript
桥机制,在WebView中之JavaScript同Java进行通信,而这样的话即Javascript可以直接创造原生UI界面,以获取比较高之属性目标。

mysql项目的指包

 

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

这样,它支持C/B/S模式即Hybrid 混合式App的开发。

多少上下文和连串

 

对mysql的上下文和应用sql没什么两类,需要专注的是一旦抬高的SSL的否定,否则还要会生出非常出

1.
眼看自己是Android内置的建制,所用召开的劳作仅是开同样重叠封装,共js使用,所以理论及是负有特别好的扩展性的;

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

2.
将UI主体布局、升级当职能在Native,内部的功能模块,变化于生之,放在服务端,利用HTML5的缓存特性缓存界面的布局头条数据以及逻辑,减少用户提升,并提升用户体验;

    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; }
    }
  1. 仅支持Android平台

数量存储

 

贯彻持续基础设备里的EFRepository就好了,我们要呢仓储传递一个数据上下文进来,就是者定义之Mysql的上下文对象,这样你的囤积就得操作是上下文了.

  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;
        }
    }

业务层注入

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

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

事情实现

得一直打模块里把相应的储存取下,然后实施相应之curd操作即可

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

然咱们以dotnet
core里通过efcore去操作mysql数据库就水到渠成了,需要注意的是,在mysql连接串中,一定要是增长SslMode=None是特性,否则会启用ssl链接!

感谢各位阅读!

回来目录