ASP.NET Core + EF6
微软推出了全新的 .Net Core,于是我就想着在目前接手的项目中使用这项新技术。但是因为预算的原因,我们所用的数据库是 MySql 。但是最新的 EF Core 并不支持 MySql ,所以目前我还是使用的 EF6 。然而微软官网并没有这方面相关的例子,所以今天折腾了一整天,终于把 EF 6 成功配置在了 .Net Core 项目中。
准备
- VS 2015 中新建一个 ASP.NET Core 项目(由于EF 6 不支持 CoreCLR,所以使用 .Net Framework)
- 一个根据 Code First 定义的
DbContext
类以及相应的Entity
类(由于目前的 VS 2015 在 ASP.NET Core 项目中不能直接由数据库生成 Code First 代码,所以我们需要自己手写 Code First 类)
使用
现在来看看我定义的 DbContext
类
public partial class ParkDbContext : DbContext
{
public ParkDbContext() : base("Data Source=DESKTOP-M31J37E;Initial Catalog=moneyManager;User ID=zeeko;Password=*******")
{
}
public virtual DbSet<LoginInfo> LoginInfo { get; set; }
public virtual DbSet<IncomeAndSpending> IncomeAndSpending { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<IncomeAndSpending>()
.Property(e => e.Type)
.IsUnicode(true);
}
}
出于简单,我们就直接在Controller
中使用
public class TestController : Controller
{
private ParkDbContext dbContext=new ParkDbContext();
public string Index()
{
var result = (
from item in dbContext.IncomeAndSpending
select item
).FirstOrDefault();
return result.Type;
}
}
这样的话,我们就完成了连接!
重构
上面的做法其实是不好的,如果后期我们需要更换数据库,我们需要修改DbContext
类,这样做是不对的。
而且在之前的 MVC 4 的项目中,我们是在 web.config 文件中定义的连接字符串,所以我们在 .Net Core 中的如何使用类似的方式来做呢?
重构
首先,我们需要将DbContext
的构造函数改造一下
public ParkDbContext(string connectionString) : base(connectionString)
{
}
然后我们在控制器中通过构造函数注入
public TestController(ParkDbContext context)
{
dbContext = context;
}
然后我们在 appsettings.json 文件中定义一下连接字符串
{
"ConnectionStrings": {
"DefaultConnection": "Data Source=DESKTOP-M31J37E;Initial Catalog=moneyManager;User ID=zeeko;Password=windows10zt"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}
然后在 Startup.cs 文件中的 ConfigureServices
方法中注册一下
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddScoped(sp => new ParkDbContext(Configuration["ConnectionStrings:DefaultConnection"]));
// Add application services.
}
至此,我们就可以在配置文件中修改连接字符串了!
后续
接下来,我会试着连接到 MySql
参考文章:
重构 ASP.NET 5/EF6 项目和依赖关系注入
ASP.NET Core + EF6的更多相关文章
- [争什么! 掺在一起做撒尿牛丸啊! 笨蛋]ASP.NET Core 2.0 + EF6 + Linux +MySql混搭
好消息!特好消息!同时使用ASP.NET Core 2.0和.NET Framework类库还能运行在linux上的方法来啦! 是的,你没有看错!ASP.NET Core 2.0,.NET Frame ...
- 【Asp.Net Core】ASP.NET Core 2.0 + EF6 + Linux +MySql混搭
好消息!特好消息!同时使用ASP.NET Core 2.0和.NET Framework类库还能运行在linux上的方法来啦! 是的,你没有看错!ASP.NET Core 2.0,.NET Frame ...
- Windows下构建ASP.NET Core+Code First+Docker
背景介绍 本文将会示范如何在Windows系统下基于ASP.NET Core构建跨平台服务,并通过Docker容器运行发布. 首先说一下为什么选择这一套组合: 我本人和我们Code4Thought团队 ...
- Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程
原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...
- 【原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅1】
鸡冻人心的2016,微软高产年. build 2016后 各种干货层出不穷. 1 Win10 集成了bash ,实现了纳德拉的成诺,Microsoft Love Linux!!! 2 跨平台 ,收 ...
- 基于Asp.Net Core Mvc和EntityFramework Core 的实战入门教程系列-1
来个目录吧: 第一章 第二章 第三章 暂时就这么多.后面路线更新吧 本系列文章为翻译加上我个人的使用心得理解,希望帮助热爱学习的程序员. 珍重声明:本系列文章会跟原文有点出入,去掉了罗里吧嗦的文字. ...
- 从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置
第1部分:http://www.cnblogs.com/cgzl/p/7637250.html 第2部分:http://www.cnblogs.com/cgzl/p/7640077.html 第3部分 ...
- 【转载】从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置
Github源码地址:https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratc ...
随机推荐
- mysql分区及实例演示
一.为什么要分区? 需求:大数据.解决方案:分而治之,更细一点即为.将大表和大索引分为一个更小的操作单元 在mysql中,分区允许将表.索引和索引编排表细分为更小的单元.分区后,每个分区有自己单独的名 ...
- 【iCore3 双核心板_ uC/OS-III】例程四:时间管理
实验指导书及代码包下载: http://pan.baidu.com/s/1pKWKuBT iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- HDU 1565&1569 方格取数系列(状压DP或者最大流)
方格取数(2) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- ThinkPHP3.2.3 Nginx 下 URL_MODEL 的配置
ThinkPHP3.2.3 的 URL_MODEL 包括普通模式(0).PATHINFO 模式(1).REWRITE 模式(2).兼容模式(3)等 4 种 URL 模式.在 Apache 下只要在配置 ...
- OpenGL问题拾遗
1 OpenGL设置好纹理以后显示不出来,显示为黑色 纹理默认会使用 mipmap .如果没有修改filter选项,或没有指定其他level的mipmap数据,就会显示不出来
- Markdown语法速查
Markdown教程:http://wowubuntu.com/markdown/ h1 # h1 h2 ## h2 h3 ### h3 h4 #### h4 h5 ##### h5 h6 ##### ...
- 【译】在ASP.Net和IIS中删除不必要的HTTP响应头
引入 每次当浏览器向Web服务器发起一个请求的时,都会伴随着一些HTTP头的发送.而这些HTTP头是用于给Web服务器提供一些额外信息以便于处理请求.比如说吧.如果浏览器支持压缩功能,则浏览器会发送A ...
- jqzoom图片放大镜
jqzoom是一个图片放大器插件.它功能强大,使用简便! 引入js与css: <script type="text/javascript" src="js/jque ...
- mysql中int、bigint、smallint 和 tinyint的区别
使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储 ...
- 管理不同版本ruby和rails的利器——rvm
近年来,ruby on rails逐渐火了起来,我想各位码农早就耳闻,特别是那些做B/S项目的童鞋,早就想跃跃一试了. 笔者也是初次接触ruby on rails ,我想,对于初学者来说,最好的学习方 ...