.NetCore教程之 EFCore连接Mysql DBFirst模式
一:创建ef的类库,同时将此项目设置为启动项(为scaffold-dbcontext -tables指令使用),同时安装2个包
①microsoft.entityframeworkcore.tools
②pomelo.entityframeworkcore.mysql (这个是第三方的ef mysql 中间件)
例如:
二:生成数据库的实体和ef的dbcontext对象,用到的是 scaffold-dbcontext命令
在程序包控制台输入以下命令
scaffold-dbcontext -force "server=****;user id=root;password=****;database=****" -provider "pomelo.entityframeworkcore.mysql"
server:数据库地址,user id:账号,password:登录密码
如果是针对单表的更新,加一个-tables 后面是要更新的表名
scaffold-dbcontext -force "server=****;user id=root;password=****;database=****" -provider "pomelo.entityframeworkcore.mysql" -tables "mytable"
执行完成之后会生成指定的是model ,注意:表必须有主键,才会生成,如果没有主机会报 unable to generate entity type for table “xxxx” 警告,当然实体也不会生成
出现的问题:如果有表字段为 datetime类型的,生成的时候会报错 应输入标识符,处理方法:把.()去掉。此问题如果有大神看到帮忙解答下
例如:
三:创建标准的web应用,进行使用
①在appsettings.json配置数据库的地址信息,注意 sslmodel=none例如
"mysqlconnection": "database='***';data source=****;user id=***;password=***;charset=utf8;sslmode=none"
② 在startup.cs 配置注入,其中有用到一些引用 顺手引用一下
public void configureservices(iservicecollection services)
{
services.configure<cookiepolicyoptions>(options =>
{
// this lambda determines whether user consent for non-essential cookies is needed for a given request.
options.checkconsentneeded = context => true;
options.minimumsamesitepolicy = samesitemode.none;
});
//ef mysql 配置
services.adddbcontext<drewtestcontext>(options => options.usemysql(configuration.getconnectionstring("mysqlconnection")));
services.addmvc().setcompatibilityversion(compatibilityversion.version_2_1);
}
③之后就是标准的调用,例如在控制器中的使用
public class homecontroller : controller
{
drewtestcontext _content;
public homecontroller(drewtestcontext context)
{
_content = context;
}
public iactionresult index()
{
list<sctonlyhome> list_sctonlyhomes = _content.sctonlyhome.tolist();
return view();
}
}
到此就是基础的ef core mysql入门配置了。