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

时间:2024-04-13 13:52:37

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


最近开始从C/S项目跳入B/S项目,以前一直用winform,B/S用PHP,现在给自己重新开坑学习ASP.NET。

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

前端就不多说了,HTML,CSS,这些比较熟,做项目就慢慢来学习中实践呗。然后View使用Razor来写功能,其实就是个@+功能名。PHP是<?。

不过想不到,一来ASP.NET就进了一个坑,MVC固然好理解,但是绝壁没有Webform顺手啊,不过既然选了方向就应该搞下去啊(其实是因为前端已经搞好了几个页面了懒得换了~哈哈哈)

快速切入主题

先搞最重要的数据库。

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

一、手动配置连接数据库(CF)

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

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

先记录一下全手动配置

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

1、引用EntityFramework

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

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




2、建实体,Models

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



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


3、建数据上下文

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

此处一定要using System.Data.Entity 因为 Dbcontext是来自于EF的。

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


4、配置连接信息

上面的DBcontest是从配置信息里先读取数据库连接字符串,因此需要配置根目录下的Web.configASP.NET MVC 初学笔记.1 EF连接数据库的多种方法



5、生成控制器

可以自动生成也可以手动写,这里介绍自动的方法


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

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


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

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


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

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



6、RouteConfig配置测试

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


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

可以看到Testtables这个表里什么都没有

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

点Creat New

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

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

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


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

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



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

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



*****如果对字段的属性有特别需要,比如指定主键和不同的数据类型,就需要先在实体类里用[]来进行注释

并且需要

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

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


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

二、手动配置的DF连接的方式

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



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



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

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

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



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

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

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


4.自动生成Controller和View


5.运行

就能读出来testtable2的表了

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

6.报错

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

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

ASP.NET MVC 初学笔记.1 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的步骤可以解决,如果还有问题可以参考这篇文章


三、自动配置EF方法

自动配置就一个字,快。

下面上步骤


1、新建实体数据模型

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



选EF设计器

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



点新建连接

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



填自己的服务器信息

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



红圈处可更改自己的数据上下文实体

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




选需要的表

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




然后就……全自动生成了我们手动生成的所有的实体模型

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

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



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

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

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


3、测试

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


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