.NET Core1.1+VS2017RC+MySQL+EF搭建多层Web应用程序
先贴上解决方案截图

一、新建4个解决方案文件夹
1-Presentation
2-Application
3-Domain
4-Infrastructure
二、在解决方案文件夹中分别创建项目

其余项目创建省略
项目引用关系:
1.ContosoUniversity.WebAdmin引用ContosoUniversity.Application、ContosoUniversity.Domain
2.ContosoUniversity.Application引用ContosoUniversity.Repository、ContosoUniversity.Domain
3.ContosoUniversity.Repository引用ContosoUniversity.Domain
4.ContosoUniversity.Domain不引用任何项目
三、ContosoUniversity.Domain项目中添加dll Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.Relational
四、ContosoUniversity.Domain项目添加Student、SchoolContext、DbInitializer类
Student:POCO对象,对应数据库中的Student表
SchoolContext:数据库上下文,用于数据库CRUD以及Migrations操作
DbInitializer:初始化数据库并添加测试数据
using System; namespace ContosoUniversity.Domain
{
public class Student
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
}
}
using Microsoft.EntityFrameworkCore; namespace ContosoUniversity.Domain.Data
{
public class SchoolContext : DbContext
{
public SchoolContext(DbContextOptions<SchoolContext> options) : base(options)
{
} public DbSet<Student> Students { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>().ToTable("Student");
}
}
}
using System;
using System.Linq; namespace ContosoUniversity.Domain.Data
{
public static class DbInitializer
{
public static void Initialize(SchoolContext context)
{
context.Database.EnsureCreated(); // Look for any students.
if (context.Students.Any())
{
return; // DB has been seeded
} var students = new Student[]
{
new Student{FirstMidName="Carson",LastName="Alexander",EnrollmentDate=DateTime.Parse("2005-09-01")},
new Student{FirstMidName="Meredith",LastName="Alonso",EnrollmentDate=DateTime.Parse("2002-09-01")},
new Student{FirstMidName="Arturo",LastName="Anand",EnrollmentDate=DateTime.Parse("2003-09-01")},
new Student{FirstMidName="Gytis",LastName="Barzdukas",EnrollmentDate=DateTime.Parse("2002-09-01")},
new Student{FirstMidName="Yan",LastName="Li",EnrollmentDate=DateTime.Parse("2002-09-01")},
new Student{FirstMidName="Peggy",LastName="Justice",EnrollmentDate=DateTime.Parse("2001-09-01")},
new Student{FirstMidName="Laura",LastName="Norman",EnrollmentDate=DateTime.Parse("2003-09-01")},
new Student{FirstMidName="Nino",LastName="Olivetto",EnrollmentDate=DateTime.Parse("2005-09-01")}
};
foreach (Student s in students)
{
context.Students.Add(s);
}
context.SaveChanges();
}
}
}
五、ContosoUniversity.WebAdmin项目修改
1.appsetting.json文件添加MySQL连接字符串
"ConnectionStrings": {
"DefaultConnection": "server=xxx;user id=xxx;password=xxx;database=ContosoUniversity;"
}
2.添加NuGet包MySql.Data.EntityFrameworkCore 6.10.0-alpha、Microsoft.EntityFrameworkCore.Tools 1.1.0-preview4-final
打开工程.csproj工程文件,添加CliTool“Microsoft.EntityFrameworkCore.Tools.DotNet”

否则在migrations操作时会报【No executable found matching command "dotnet-ef"】错误

MySql版本不要选7.0.6-IR31,项目跑起来会报"MySql.Data.EntityFrameworkCore.Storage.Internal.MySQLCommandBuilderFactory..ctor(ISensitiveDataLogger<RelationalCommandBuilderFactory> logger, DiagnosticSource diagnosticSource, IRelationalTypeMapper typeMapper)"错误

3.StartUp类ConfigureServices方法注入数据库上下文
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<SchoolContext>(options =>
options.UseMySQL(Configuration.GetConnectionString("DefaultConnection"), b => b.MigrationsAssembly("ContosoUniversity.WebAdmin"))); // Add framework services.
services.AddMvc();
}
注意,标红的代码不可缺少,否则EntityFramework无法执行Migrations,报错信息如下

4.StartUp添加数据库初始化
改造Configure方法签名,添加SchoolContext参数
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, SchoolContext context)
Configure方法末尾添加数据库初始化代码
DbInitializer.Initialize(context);
最后
把其余各层的代码都加上项目就可以跑起来了,通过Migrations操作维护开发库,.NET Core+MySQL+EF使用VS2017RC构建项目的坑基本就是这些了。。
注意
NuGet包Install或Uninstall命名执行后,查看VS2017RC中依赖的NuGet包发现没有变化(实际上已Install或Uninstall,VS2017RC没有刷新),此时需要关闭解决方案重新打开,这时NuGet依赖才会刷新,这时VS2017RC的一个BUG!
.NET Core1.1+VS2017RC+MySQL+EF搭建多层Web应用程序的更多相关文章
- VS+mysql+EF搭建
2016年7月6日更新: vs2010只需要安装mysql的.net connector就可以 vs2012, vs2015都需要安装.net connector + ODBC connector才行 ...
- Django + mysql 快速搭建简单web投票系统
了解学习pyhton web的简单demo 1. 安装Django, 安装pyhton 自行百度 2. 执行命令创建project django-admin.py startproject mysi ...
- 十二个 ASP.NET Core 例子——1.1版本 EF MySql快速搭建
core1.0的时候搭建过一次mysql EF. 一大推问题.最近在core1.1 又重新搭了一次.简单搭建还挺快,没出现什么幺蛾子.总结下步骤 建立项目,例如ASP.NET Core1.1 WebA ...
- 一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建
作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装C ...
- Linux CentOS 安装MySql以及搭建MySql主从复制
前言 在之前的博客中,有过几篇都写了关于mysql在linux下的搭建教程,可能以后还会再写,但是又不想重复在写, 于是便想单独将此抽出来,单独写成一篇博客,并详细记录一些安装过程以及遇到的问题解决办 ...
- Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程
原文地址:http://www.osyunwei.com/archives/7378.html 搬运是为了自己找资料方便. 准备篇 一.环境说明: 操作系统:Windows Server 2012 R ...
- django+nginx+xshell简易日志查询,接上<关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思>
纠正一下之前在<关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思>中说到的PHP+MySQL太慢,这里只是说我技术不好,没 ...
- 关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思
关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思--链接--http://www.cnblogs.com/drgcaosheng/p/ ...
- Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程
准备篇 一.环境说明: 操作系统:Windows Server 2012 R2 PHP版本:php 5.5.8 MySQL版本:MySQL5.6.15 二.相关软件下载: 1.PHP下载地址: htt ...
随机推荐
- CreateToolhelp32Snapshot 以及 EnumProcesses
RT,请教如何获得Windows任务管理器中所显示的进程列表. CreateToolhelp32Snapshot 以及 EnumProcesses 这些方法我都试过了,但是这两种方法得到的结果和任务管 ...
- Ubutun 配置php redis 扩展
1.安装redis 下载:wget --no-check-certificate https://github.com/nicolasff/phpredis/archive/2.2.4.tar.gz ...
- mysql 设置用户并授权
一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指 ...
- tensorflow初始化函数变更
变量初始化函数改变 老版本:initialize_all_variables()(2017-03-02之后删除) 新版本:global_variables_initializer()
- 【算法】Escape
The students of the HEU are maneuvering for their military training. The red army and the blue army ...
- [C#.Net]对WinForm应用程序的App.config的使用及加密
我们在写C#应用程序时,在工程文件中放置一个app.config,程序打包时,系统会将该配置文件自动编译为与程序集同名的.exe.config 文件.作用就是应用程序安装后,只需在安装目录中找到该文件 ...
- spring学习 十 schema-based 异常通知,和环绕通知
一 schema-based异常通知 第一步:创建通知类 :新建一个类实现 throwsAdvice 接口,throwsAdvice接口只是标记接口里面并没有任何方法,必须自己写方法,且必须叫 aft ...
- org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403
爬取网站的时候 conn = Jsoup.connect(url).timeout(5000).get();直接用get方法,有些网站可以正常爬取. 但是有些网站报403错误,403是一种在网站访问的 ...
- 2018.06.26 NOIP模拟 纪念碑(线段树+扫描线)
题解: 题目背景 SOURCE:NOIP2015−GDZSJNZXSOURCE:NOIP2015-GDZSJNZXSOURCE:NOIP2015−GDZSJNZX(难) 题目描述 2034203420 ...
- JSP错误
1.<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodin ...