Vs2017 NetCode Mvc EF Mysql 整合2
1 NetCode EF整合 代码
3 源代码 https://github.com/chxl800/EFMysqlDemo
1.1 项目文件结构

1.2 NuGet MySql.Data.EntityFrameworkCore 8.0.18
1.3 appsettings.json 增加数据库字符串链接ConnectionStrings
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": { "MysqlConnection": "Data Source=localhost;Database=demodb;User ID=root;Password=root;pooling=true;CharSet=utf8;port=3306;sslmode=none" }
}
1.4 DBEntities.cs 添加数据库上下文
using EFMysqlNetCodeMvc.Models;
using Microsoft.EntityFrameworkCore; namespace EFMysqlNetCodeMvc
{
public class DBEntities : DbContext
{
public DBEntities(DbContextOptions<DBEntities> options) : base(options)
{
} ////这里也可以
//string str = @"Data Source=localhost;Database=demodb;User ID=root;Password=root;pooling=true;CharSet=utf8;port=3306;sslmode=none"; //protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) =>
// optionsBuilder.UseMySQL(str); public DbSet<User> User { get; set; }
}
}
1.5 User.cs 增加数据库表实体类
1.6 Startup.cs 配置重点 有中文注释的新加的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using EFMysqlNetCodeMvc;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json.Serialization; namespace EFMysqlNetCodeMvc
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
} public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
//json格式化
services.AddMvc()
.AddJsonOptions(options =>
{
//忽略循环引用
//options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; //设置序列化时key为驼峰样式,开头字母小写输出 controller调用Josn(对象)
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
//原样输出
//options.SerializerSettings.ContractResolver = new DefaultContractResolver(); //时间格式
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //空值的字段不显示
//options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
}); //ef mysql 配置IOC
services.AddDbContext<DBEntities>(options => options.UseMySQL(Configuration.GetConnectionString("MySqlConnection")));
services.AddMvc();
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
} app.UseStaticFiles(); // 跨域策略
app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader().AllowCredentials()); //app.UseMvc();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
1.7 HomeController.cs mvc 代码用于测试
public class HomeController : Controller{
DBEntities db;
public HomeController(DBEntities db)
{
this.db = db;
}
public IActionResult Test()
{ //查询
List<User> list = db.User.ToList(); //json序列化
//var userJson = JsonConvert.SerializeObject(list);
//var userList = JsonConvert.DeserializeObject<List<User>>(userJson); return Json(list);
} public IActionResult Add([FromBody] User user)
{
//新增
//User user = new User();
//user.Id = Guid.NewGuid().ToString().Replace("-", "");
//db.User.Add(user);
//db.SaveChanges(); return Json(user);
}
}
1.8 运行结果


1.9 重点代码说明
1.9.1 URL:/home/test 实体User.cs首字母大写 输出首字母变小写
//json格式化
services.AddMvc()
.AddJsonOptions(options =>
{
//忽略循环引用
//options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; //设置序列化时key为驼峰样式,开头字母小写输出 controller调用Josn(对象)
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
//原样输出
//options.SerializerSettings.ContractResolver = new DefaultContractResolver(); //时间格式
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //空值的字段不显示
//options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
});
1.9.2 URL:/home/add 输入参数首字母小写 自动转化为实体User.cs首字母大写
public IActionResult Add([FromBody] User user)
2.0 User.cs
using System; namespace EFMysqlNetCodeMvc.Models
{
/// <summary>
/// 账号表
/// </summary>
public class User
{
/// <summary>
///
/// </summary>
public string Id { get; set; }
/// <summary>
///
/// </summary>
public string TenantId { get; set; }
/// <summary>
///
/// </summary>
public string UserName { get; set; }
/// <summary>
///
/// </summary>
public string RealName { get; set; }
/// <summary>
///
/// </summary>
public string UserCode { get; set; }
/// <summary>
///
/// </summary>
public string Password { get; set; }
/// <summary>
///
/// </summary>
public string Salt { get; set; }
/// <summary>
///
/// </summary>
public string Mobile { get; set; }
/// <summary>
///
/// </summary>
public string Email { get; set; }
/// <summary>
///
/// </summary>
public int UserType { get; set; }
/// <summary>
///
/// </summary>
public int Status { get; set; }
/// <summary>
///
/// </summary>
public string Creator { get; set; }
/// <summary>
///
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
///
/// </summary>
public string Reviser { get; set; }
/// <summary>
///
/// </summary>
public DateTime ReviseTime { get; set; }
/// <summary>
///
/// </summary>
public DateTime? LoginTime { get; set; }
/// <summary>
///
/// </summary>
public string IP { get; set; }
/// <summary>
///
/// </summary>
public DateTime? LastLoginTime { get; set; }
/// <summary>
///
/// </summary>
public string LastIP { get; set; }
}
}
Vs2017 NetCode Mvc EF Mysql 整合2的更多相关文章
- Vs2017 NetCode Mvc EF Mysql 整合1
1 运行环境 vs2017 NetCode2.0 2 NuGet MySql.Data.EntityFrameworkCore 8.0.18 3 源代码 https://github.c ...
- VS2017+EF+Mysql生成实体数据模型(解决闪退的坑) 版本对应才行
最近要使用VS2017+EF+Mysql,在生成实体数据模型踏过一些坑,在此做个总结. 1.先下载并安装 mysql-connector-net-6.9.10.msi 和 mysql-for-vi ...
- VS2017 + EF + MySQL 我使用过程中遇到的坑
原文:VS2017 + EF + MySQL 我使用过程中遇到的坑 写在前面: 第一次使用MySQL连接VS的时候本着最新版的应该就是最好的,在MySQL官网下载了最新版的MySQL没有并且安装完成之 ...
- VS2017+EF+Mysql生成实体数据模型(解决闪退的坑)
原文:VS2017+EF+Mysql生成实体数据模型(解决闪退的坑) 最近要使用VS2017+EF+Mysql,在生成实体数据模型踏过一些坑,在此做个总结. 1.先下载并安装 mysql-connec ...
- spring mvc + mybaties + mysql 完美整合cxf 实现webservice接口 (服务端、客户端)
spring-3.1.2.cxf-3.1.3.mybaties.mysql 整合实现webservice需要的完整jar文件 地址:http://download.csdn.net/detail/xu ...
- Asp.Net MVC EF各版本区别
2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC 2.0版,VS2010 2011年發行ASP.NET MVC 3.0版+EF4,需要.Net4.0支持,VS2 ...
- [转帖]Asp.Net MVC EF各版本区别
Asp.Net MVC EF各版本区别 https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 201 ...
- [转]Asp.Net MVC EF各版本区别
本文转自:http://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC ...
- vs2012 + web api + OData + EF + MYsql
vs2012 + web api + OData + EF + MYsql 开发及部署 先说下我的情况,b/s开发这块已经很久没有搞了,什么web api .MVC.OData都只是听过,没有实际开发 ...
随机推荐
- Apache Commons Net中FTPClient设置成以二进制进行传输
代码: ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
- Windows VS2017 编译 libssh2 1.7.0(执行命令、文件上传、下载)
下载安装 OpenSSL 要编译 libssh2,必须先编译好 OpenSSL 的静态库,直接从 http://slproweb.com/products/Win32OpenSSL.html 下载已经 ...
- IDA7.2破解版本
更新说明 https://www.hex-rays.com/products/ida/7.2/index.shtml 破解文章 作者阐述了一下对IDA安装密码的攻击方法,通过枚举多种语言默认的随机数发 ...
- GraphQL学习之原理篇
前言 在上一篇文章基础篇中,我们介绍了GraphQL的语法以及类型系统,算是对GraphQL有个基本的认识.在这一篇中,我们将会介绍GraphQL的实现原理.说到原理,我们就不得不依托于GraphQL ...
- Direct2D 学习笔记(2)画刷 Brush
画刷的使用方法 需要包含的文件:<wincodec.h> 需要包含的库: "windowscodecs.lib" 资源网址: https://docs.micro ...
- docker中使用Mysql8+phpmyadmin
现在基本装这套都用docker了,有一些小坑在里面,简单说一下. 运行mysql比较简单,参考mysql⭐Docker Official Images,需要注意不要忘记暴露端口给phpmyadmin用 ...
- 【计算机视觉】Objectness算法(一)---总体理解,整理及总结
1.源码下载及转换为VS2012 WIN32版本. http://www.cnblogs.com/larch18/p/4560690.html 2.原文: http://wenku.baidu.com ...
- [转载]Oracle创建表空间、创建用户以及授权
Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 为了避免麻烦,可以用’Database Configuration Assistant’向导来创建数 ...
- java根据模板生成pdf
原文链接:https://www.cnblogs.com/wangpeng00700/p/8418594.html 在网上看了一些Java生成pdf文件的,写的有点乱,有的不支持写入中文字体,有的不支 ...
- 从 select ... for update来分析mysql的锁
一 mysql的悲观锁 - 以行锁做示例 每次拿数据的时候都认为别的线程会修改数据,所以每次拿数据的时候都会给数据上锁.上锁之后,当别的线程想要拿数据时,就会阻塞.直到给数据上锁的线程将事务提交或者回 ...