一步步学习EF Core(1.DBFirst)

前言

很久没写博客了,因为真的很忙,终于空下来,打算学习一下EF Core顺便写个系列, 今天我们就来看看第一篇DBFirst.

 本文环境:VS2017  Win7  .NET Core1.1    EF Core1.1.2

正文

这里我们不讨论是用DBFirst好,还是CodeFirst高端..各有各自的用处和适用场景..

我们单纯的只是来使用这个DBFirst..

既然是DBFirst,那么在用DBFirst之前..首先你要有一个数据库(嗯,废话)

其次,如果你是Windows7系统 那么需要升级你的Windows PowerShell到3.0+的版本

然后你需要安装相关的工具包,从NuGet下载即可如下图:

为了方便你们复制..我列一下:

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Tools

Microsoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.SqlServer.Design

然后,我们在VS的工具选项中,选择NuGet包管理器,选择程序包管理控制台

输入命令行:

Scaffold-DbContext "这里输入你的数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer

就会生成一个Modles文件夹如图:

这里面就是你的上下文对象和相关的实体类了.

我们进到上下文对象,会发现自己的连接字符串是固化在这里面的,如图:

我们当然不能这么做,所以,请删除掉他.

下一步,我们使用Asp.net Core 来测试测试看能不能访问.

创建Core项目的流程,我就不说了

然后给你的Core项目用NuGet添加引用:Microsoft.EntityFrameworkCore.SqlServer和Microsoft.EntityFrameworkCore

在配置文件里添加数据库连接字符串:

  "ConnectionStrings": {  
"SchoolConnection": "Data Source=.;Initial Catalog=School_Test;User ID=**;Password=***;
MultipleActiveResultSets=true
"}

然后我们在Startup中注入我们的上下文对象:

在ConfigureServices()方法中注入,代码如下:

        public void ConfigureServices(IServiceCollection services){    
// Add framework services.          
           
//注入SignalR.(与本文无关,请无视)services.AddSignalR(options =>{options.Hubs.EnableDetailedErrors = true;}); //注入上下文对象services.AddDbContext<School_TestContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("SchoolConnection")));services.AddMvc();}

我们创建控制器,代码如下:


    public class TestController : Controller{        //构造函数注入上下文private readonly School_TestContext _context;     

public TestController(School_TestContext Context){_context = Context;} public IActionResult ListView(){ return View(_context.UserTable.ToList());}}

创建相应的视图如下:

@model IEnumerable<EFCoreModel.Modles.UserTable>@{ViewData["Title"] = "ListView";Layout = "~/Views/Shared/_Layout.cshtml";
}    <h2>ListView</h2><p><a asp-action="Create">Create New</a></p><table class="table"><thead><tr><th>用户名            </th><th>密码            </th><th>ID            </th><th>班级名            </th><th></th></tr></thead><tbody>@foreach (var item in Model){            <tr><td>@Html.DisplayFor(modelItem => item.UserName)                </td><td>@Html.DisplayFor(modelItem => item.PassWord)                </td><td>@Html.DisplayFor(modelItem => item.Id)                </td><td>@Html.DisplayFor(modelItem => item.Class.ClassName)          
</td><td><a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Details" asp-route-id="@item.Id">Details</a> | <a asp-action="Delete" asp-route-id="@item.Id">Delete</a></td></tr>} </tbody></table>

运行代码,会报错.如下错误:

No database provider has been configured for this DbContext. A provider can be configured by overriding the DbContext.OnConfiguring method or by using AddDbContext on the application service provider. If AddDbContext is used, then also ensure that your DbContext type accepts a DbContextOptions<TContext> object in its constructor and passes it to the base constructor for DbContext.

 

这是因为我们通过DBFirst生成的上下文并不能直接拿来注入使用.我们需要改造一下,给上下文添加构造函数,如下:

        public School_TestContext(DbContextOptions options) :base(options){}

然后在运行我们的代码.得到结果如下:

我们发现红框位置的作为关联表的班级名,并没有显示~,这个留待我们后面讲解.

原文地址:http://www.cnblogs.com/GuZhenYin/p/6857413.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325573.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core改进了.NET Framework中的字符串处理

显然Microsoft开发人员和管理人员并没有表达清楚&#xff0c;事实上ASP.NET Core 2.0将会得到整个.NET Framework的支持。当前的更改只实现了在ASP.NET上提供.NET Core&#xff0c;这是为了便于开发而采取的一个临时步骤。对此&#xff0c;在ASP.NET Core预览发行声明中给出了如…

阿里P9谈程序员程序员的青春饭

转载自 阿里P9谈程序员程序员的"青春饭" 导读&#xff1a;你是否曾经认真思考过——毕业3-5年、10年&#xff0c;乃至更久后&#xff0c;我们希望成为什么样的人&#xff1f;作为一名技术人&#xff0c;我们要如何规划自己的职业发展生涯&#xff1f;网上热议的“…

优秀学生专栏——孙振涛

今天继续回访17级优秀毕业生&#xff0c;今天回访的同学是孙振涛同学&#xff0c;孙振涛在班内一直都是比较安稳守纪律&#xff0c;上学期间未违反过任何纪律&#xff0c;毕业之后自己创业合伙开了一个互联网公司&#xff0c;目前公司正在走上正轨&#xff0c;以下是对孙振涛同…

不可思议黑科技,Xamarin移动开发新时代

黑科技&#xff01;新一代Xamarin竟然可以将.NET代码原生编译成&#xff1a;Jar包供Java原生调用、swift类库、obj-c类库、C类库 供目标平台传统代码直接调用 之前和很多朋友聊到Xamarin觉得确实不错&#xff0c;原生性能&#xff0c;研发效率提升2倍&#xff0c;研发成本降低5…

这可能是最生动的加密相关科普文章

转载自 这可能是最生动的加密相关科普文章 谁都不想在通信过程中被别人“窃取”小秘密。本文借助一对情侣与八卦女、猥琐男的斗智故事&#xff0c;为大家讲述科普密码学基础知识。既有料又有趣&#xff0c;深入浅出&#xff0c;相信你会喜欢。 一、背景 事情是这样的&#…

学习心得——王梦茹

18级青鸟1班王梦茹编程其实是一门既枯燥又简单有乐趣的一门技术&#xff0c;这要根据个人而言&#xff0c;也许每个人来这里学习编程的初衷都是不一样的&#xff0c;但是你可以去慢慢的发现编程中的乐趣&#xff0c;兴趣是最大的老师&#xff0c;对感兴趣的事学习起来往往是事半…

JS中函数的返回值

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>01_数据类型</title> </head> <body> <!-- 1. 分类(2大类)* 基本(值)类型* Number: 任意数值* String: 任意文本* Boolean: true…

学习心得——李嫣然、逯广捷

18级青鸟1班李嫣然、逯广捷我觉得学习中最基本的一点&#xff0c;就是主动&#xff0c;学习是自己的事情&#xff0c;只有积极主动地学习才能感受到学习中的乐趣&#xff0c;要是越烦越不想学那肯定就是更学不会&#xff0c;这样周而复始最后就是什么都不会&#xff0c;所以说学…

一步步学习EF Core(2.事务与日志)

前言 上节我们留了一个问题,为什么EF Core中,我们加载班级,数据并不会出来 其实答案很简单,~ 因为在EF Core1.1.2 中我们在EF6.0中用到的的延迟加载功能并没有被加入,不过在EF Core 2.0中,这个功能将回归 而且这个功能是否需要被加入进去,社区也在激烈的讨论当中,有兴趣的可…

学习心得——高婕

18级青鸟1班高婕在这里和大家谈谈我学习的心得体会。我认为&#xff0c;要把学习当作是一种乐趣&#xff0c;不要当作一种负担。作为一名学生&#xff0c;我们要尊重老师的辛勤劳动&#xff0c;认真听好每一节课。其实在这里学习编程很简单&#xff0c;跟着老师的步调走&#x…

JS中对象的总结

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>03_对象</title> </head> <body> <!-- 1. 什么是对象?* 代表现实中的某个事物, 是该事物在编程中的抽象* 多个数据的集合体(封装…

Visual Studio 2017 针对移动开发的新特性介绍

Visual Studio是世界上最好的IDE之一&#xff0c;如果是 .NET世界&#xff0c;那就没有之一了(^_^)&#xff0c;而最近推出的Visual Studio 2017在移动平台方面更是加强了这一点。这个版本包含了一些非常棒的功能&#xff0c;包括实时单元测试、新的重构、代码提示、C&#xff…

学习心得——张坤鹏

19级青鸟3班张坤鹏学习编程是很累的&#xff0c;需要不断地实践和探索&#xff1b;我的姑父就是学习计算机的&#xff0c;他说你选择了这个行业会很累&#xff0c;但只要你能入门&#xff0c;你就会了解到它的乐趣&#xff1b;我曾经见我姑父做一个项目&#xff0c;除了吃饭&am…

Microsoft发布.NET架构指南草案

微软开发部和Visual Studio产品团队提供了四份应用程序架构指南草案。这些草案涉及四个领域&#xff1a;微服务和Docker、ASP.NET Web应用程序、Azure云部署及Xamarin移动应用程序。每份指南包含一套符合相应主题的文档。微软希望可以获得整个社区对这些文档草案的反馈。 微服…

什么是线程安全,你真的了解吗

转载自 什么是线程安全&#xff0c;你真的了解吗 记得今年3月份刚来杭州面试的时候&#xff0c;有一家公司的技术总监问了我这样一个问题&#xff0c;说你给我说说有哪些线程安全的类&#xff0c;我心里一想&#xff0c;呵呵&#xff0c;这我早都背好了&#xff0c;稀里哗啦说…

学习心得——徐龙翥

19级青鸟3班 徐龙翥千里之行始于足下&#xff0c;不要认为html全是代码就认为学习起来特别艰难&#xff0c;如果你仔细观察的话就会发现&#xff0c;其实单词并没有多少&#xff0c;语法也并不复杂&#xff0c;只要做到上课认真听讲&#xff0c;课前预习以及课后复习&#xff0…

基于DotNet Core的RPC框架(一) DotBPE.RPC快速开始

0x00 简介 DotBPE.RPC是一款基于dotnet core编写的RPC框架&#xff0c;而它的爸爸DotBPE&#xff0c;目标是实现一个开箱即用的微服务框架&#xff0c;但是它还差点意思&#xff0c;还仅仅在构思和尝试的阶段。但不管怎么说RPC是微服务的基础&#xff0c;先来讲讲RPC的实现吧。…

学习心得——刘文瑞

19级青鸟3班 刘文瑞以前因为经常玩游戏的原因&#xff0c;导致我对软件特别感兴趣&#xff0c;但是由于学习到的东西不多&#xff0c;经常是在玩游戏&#xff0c;真正能运用到计算机上的知识实在是少的可伶。像是代码之类的东西&#xff0c;以前只是听说过&#xff0c;但是一点…

教你如何定位及优化SQL语句的性能问题

转载自 教你如何定位及优化SQL语句的性能问题 在现如今的软件开发中&#xff0c;关系型数据库是做数据存储最重要的工具。无论是Oracale还是Mysql&#xff0c;都是需要通过SQL语句来和数据库进行交互的&#xff0c;这种交互我们通常称之为CRUD。在CRUD操作中&#xff0c;最最…

SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图)

本文从零开始一步一步介绍如何在Ubuntu上搭建SQL Server 2017&#xff0c;包括安装系统、安装SQL等相关步骤和方法&#xff08;仅供测试学习之用&#xff0c;基础篇&#xff09;。 一&#xff0e; 创建Ubuntu系统&#xff08;Create Ubuntu System&#xff09; 1. 前提准…