.NET Core1.1+VS2017RC+MySQL+EF搭建多层Web应用程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了.NET Core1.1+VS2017RC+MySQL+EF搭建多层Web应用程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4183字,纯文字阅读大概需要6分钟。
内容图文
先贴上解决方案截图
一、新建4个解决方案文件夹
1-Presentation
2-Application
3-Domain
4-Infrastructure
二、在解决方案文件夹中分别创建项目
新建.NET Core Web应用程序,【身份验证】需要选择【个人用户账户】否则无法执行migrations操作,猜想原因可能少了某个NuGet包,具体没去测试验证
如果不选【个人用户账户】,migrations操作时会报【No executable found matching command "dotnet-ef"】错误
其余项目创建省略
项目引用关系:
1.ContosoUniversity.WebAdmin引用ContosoUniversity.Application、ContosoUniversity.Domain
2.ContosoUniversity.Application引用ContosoUniversity.Repository、ContosoUniversity.Domain
3.ContosoUniversity.Repository引用ContosoUniversity.Domain
4.ContosoUniversity.Domain不引用任何项目
三、ContosoUniversity.Domain项目中添加Microsoft.EntityFrameworkCore.Tools
1.1.0-preview4-final
NuGet命令:Install-Package Microsoft.EntityFrameworkCore.Tools -Pre
四、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; } publicstring LastName { get; set; } publicstring 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; } protectedoverridevoid 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 6.10.0-alpha、MySql.Data.EntityFrameworkCore 6.10.0-alpha、
Microsoft.EntityFrameworkCore.Tools
1.1.0-preview4-final
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!
原文:http://www.cnblogs.com/TomGui/p/6407935.html
内容总结
以上是互联网集市为您收集整理的.NET Core1.1+VS2017RC+MySQL+EF搭建多层Web应用程序全部内容,希望文章能够帮你解决.NET Core1.1+VS2017RC+MySQL+EF搭建多层Web应用程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。