ASP.NET MVC 初学笔记.1 EF链接数据库的多种方法

实践中学习ASP.NET,在此记录一下~也是个人第一篇。这些不是教程不是教程不是教程,仅仅是记录本身的想法和认识,当作教程看会误人子弟的,能够作参考(至少能编译经过)不要太较真,欢迎斧正和讨论。html


最近开始从C/S项目跳入B/S项目,之前一直用winform,B/S用PHP,如今给本身从新开坑学习ASP.NET。前端

因为有PHP经验对于MVC这种模式比较理解,因此就直接选了ASP.NET MVC4/5 来作开发,额。。应该是一边学一边开发。。web

前端就很少说了,HTML,CSS,这些比较熟,作项目就慢慢来学习中实践呗。而后View使用Razor来写功能,其实就是个@+功能名。PHP是<?。数据库

不过想不到,一来ASP.NET就进了一个坑,MVC当然好理解,可是绝壁没有Webform顺手啊,不过既然选了方向就应该搞下去啊(实际上是由于前端已经搞好了几个页面了懒得换了~哈哈哈)服务器

快速切入主题ide

先搞最重要的数据库。函数

之前用ADO就脑子里全是SQL语句,解决问题也是ADO,其实ADO用熟悉了我以为也不建议换别的方式来搞数据库,由于脑壳想不明白啊~EF彻底是个半自动化的东西,SQL不用想了,增删改查的过程都封装起来了,甚至你想也能够用EF加SQL字符串来查,并且将数据封装在实体里,省了些步骤,但目前我尚未体会到孰优孰劣,反正才开始用EF有些转不过来。学习

1、手动配置链接数据库(CF)测试

之前ADO各类conn加cmd就完成链接查询了,EF呢~得配置。配置有两种方法,一种是全自动,一种是全手动。spa

EF有一个基本概念,CODE FIRST和DB FIRST(??不知道写对没)以及MODEL FIRST,我认为区别就是:你彻底建好了数据库就DF,你还没想好数据库的设计就CF,CF意思就是你不用设计数据库了,你想使用的变量等等在Models里建好实体类,而后数据库建立Table和字段都是web后台操做过程当中完成了,至关。。。省心。。吧。。。

先记录一下全手动配置

新建一个空白的MVC工程:命名为test

一、引用EntityFramework

去NuGet搜索下载EntityFramework,引用里就有这两个东西了




二、建实体,Models

Model名能够简单理解为数据库对应的表名,Model里的内容就是表的各个字段。在Models下建一个Testable.cs





三、建数据上下文

简单的理解,EF上下文更像是一个链接的实体相似于把ADO里的链接数据库的语句封装起来,在Models下建Dbcontest.cs

此处必定要using System.Data.Entity 由于 Dbcontext是来自于EF的。



四、配置链接信息

上面的DBcontest是从配置信息里先读取数据库链接字符串,所以须要配置根目录下的Web.config



五、生成控制器

能够自动生成也能够手动写,这里介绍自动的方法


在Controllers上右键—添加—控制器



接着选咱们刚刚建好的模型类和数据上下文



等待几秒钟......就自动生成了对应的Controller和View




六、RouteConfig配置测试



七、生成的页面能看到下面这个就算是成功了~

能够看到Testtables这个表里什么都没有


点Creat New


在文本框输入测试内容后返回列表就看到数据表的内容了~


这时候再去数据库看一下,已经建立好了表,刚才新建的内容也应进入了数据表




再看一下字段的数据类型(属性)全是自动生成的




*****若是对字段的属性有特别须要,好比指定主键和不一样的数据类型,就须要先在实体类里用[]来进行注释

而且须要

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;



若是有数据库了,数据库有表有数据了,那EF要如何配置呢,那么请看第二种方式。

2、手动配置的DF链接的方式

接下来讲手动配置以DF为主的模式,要用EF去操做已存在的数据库,就得得使用这种方式,其过程和CF差很少只是略有一些不同。



一、先在数据库建一个名Testtable2的表



二、在Models里建一个实体类 Testtable2

注意[Tabel"Testtable2"]的意思就是指定数据库的Testtable2这张表。




3.在数据库上下文的里加入如下函数

此字符串的含义是启动链接时屏蔽效验,CF模式启动时会效验__MigrationHistory数据表,想用DF模式效验就会出错,摘抄自连接



4.自动生成Controller和View


5.运行

就能读出来testtable2的表了


6.报错

在我操做的配置过的EF里遇到过两种错误:

①这种错误就是先模拟运行一下,再进行控制器的自动生成就好了。

②是报错

The model backing the 'XXX' context has changed since the database was created. Consider using Code First Migrations to update the database(http://go.microsoft.com/fwlink/?LinkId=238269).

意思其实就是EF在CF模式下须要迁移数据库,用 (二).3的步骤能够解决,若是还有问题能够参考这篇文章


3、自动配置EF方法

自动配置就一个字,快。

下面上步骤


一、新建实体数据模型




选EF设计器




点新建链接



填本身的服务器信息




红圈处可更改本身的数据上下文实体





选须要的表





而后就……全自动生成了咱们手动生成的全部的实体模型




二、接着再自动生成Controller和View



三、测试



没错,自动配置就是这么的快,但从原理上讲手动设置更直观的明白每一个地方的构造是干什么的,也能够进行灵活的设置及更改,方便最终的发布部署。