您的当前位置:首页正文

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

2023-11-11 来源:帮我找美食网

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

数据上下文和连接串

对于mysql的上下文和使用sql没什么两样,需要注意的是要添加的SSL的否定,否则同时会有异常出来

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

数据仓储

实现继承基础设施里的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链接!

感谢各位阅读!

回到目录

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

标签:ref   代码   使用   oid   实现继承   模块   添加模块   soft   get   

小编还为您整理了以下内容,可能对您也有帮助:

.net core Api项目怎么连接Mysql数据库,然后展示查询结果

1.连接数据库:
SqlConnection cnn = new SqlConnection();//实例化一个连接
cnn.ConnectionString = "Data Source = datasource; uid = username; pwd =password; database = database_name";//设置连接字符串
cnn.Open();//打开数据库连接
2.让查询在datagridview中显示
SqlDataAdapter da = new SqlDataAdapter();//实例化sqldataadpter
SqlCommand cmd1 = new SqlCommand("select * from 表 , cnn);//sql语句
da.SelectCommand = cmd1;//设置为已实例化SqlDataAdapter的查询命令
DataSet ds1 = new DataSet();//实例化dataset
da.Fill(ds1);//把数据填充到dataset
datagridview1.datasource = ds1.tables[0];//将数据集绑定datagridview,完成显示

说明:dataset是一个数据库在内存中的映像,包括数据库中的表,视图,关系等;sqldataadapter是C#的数据库适配器,需要通过它来查询数据库,要通过SqlDataAdapter.SelectCommand来设置查询语句,查询后填充到dataset中,再把dataset和datagridview绑定就ok了,以上代码写在button事件中就可以。

.net core Api项目怎么连接Mysql数据库,然后展示查询结果

1.连接数据库:
SqlConnection cnn = new SqlConnection();//实例化一个连接
cnn.ConnectionString = "Data Source = datasource; uid = username; pwd =password; database = database_name";//设置连接字符串
cnn.Open();//打开数据库连接
2.让查询在datagridview中显示
SqlDataAdapter da = new SqlDataAdapter();//实例化sqldataadpter
SqlCommand cmd1 = new SqlCommand("select * from 表 , cnn);//sql语句
da.SelectCommand = cmd1;//设置为已实例化SqlDataAdapter的查询命令
DataSet ds1 = new DataSet();//实例化dataset
da.Fill(ds1);//把数据填充到dataset
datagridview1.datasource = ds1.tables[0];//将数据集绑定datagridview,完成显示

说明:dataset是一个数据库在内存中的映像,包括数据库中的表,视图,关系等;sqldataadapter是C#的数据库适配器,需要通过它来查询数据库,要通过SqlDataAdapter.SelectCommand来设置查询语句,查询后填充到dataset中,再把dataset和datagridview绑定就ok了,以上代码写在button事件中就可以。

efcorepowertools数据源没有mysql

1、首先卸载安装过的mysql-connector-net、mysql-for-visualstudio-1.2.7、mysql-installer-community、mysql-installer-web-community等为了实现连接的应用或者驱动,在控制面板,卸载程序里搜,搜到这个右键卸载。清理,重启,关掉VS。

2、其次确认ODBC驱动,在控制面板所有控制面板项管理工具中查看ODBC数据源64位。

3、最后确认图中两驱动是否存在,不存在,去官方下载,完成后,重新打开ODBC数据源,确认驱动情况,重启。

Top