实践中学习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,引用里就有这两个东西了
2、建实体,Models
Model名可以简单理解为数据库对应的表名,Model里的内容就是表的各个字段。在Models下建一个Testable.cs
3、建数据上下文
简单的理解,EF上下文更像是一个连接的实体类似于把ADO里的连接数据库的语句封装起来,在Models下建Dbcontest.cs
此处一定要using System.Data.Entity 因为 Dbcontext是来自于EF的。
4、配置连接信息
上面的DBcontest是从配置信息里先读取数据库连接字符串,因此需要配置根目录下的Web.config
5、生成控制器
可以自动生成也可以手动写,这里介绍自动的方法
在Controllers上右键—添加—控制器
接着选我们刚刚建好的模型类和数据上下文
等待几秒钟......就自动生成了对应的Controller和View
6、RouteConfig配置测试
7、生成的页面能看到下面这个就算是成功了~
可以看到Testtables这个表里什么都没有
点Creat New
在文本框输入测试内容后返回列表就看到数据表的内容了~
这时候再去数据库看一下,已经创建好了表,刚才新建的内容也应进入了数据表
再看一下字段的数据类型(属性)全是自动生成的
*****如果对字段的属性有特别需要,比如指定主键和不同的数据类型,就需要先在实体类里用[]来进行注释
并且需要
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
如果有数据库了,数据库有表有数据了,那EF要如何配置呢,那么请看第二种方式。
二、手动配置的DF连接的方式
接下来说手动配置以DF为主的模式,要用EF去操作已存在的数据库,就得得使用这种方式,其过程和CF差不多只是略有一些不一样。
1、先在数据库建一个名Testtable2的表
2、在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的步骤可以解决,如果还有问题可以参考这篇文章
三、自动配置EF方法
自动配置就一个字,快。
下面上步骤
1、新建实体数据模型
选EF设计器
点新建连接
填自己的服务器信息
红圈处可更改自己的数据上下文实体
选需要的表
然后就……全自动生成了我们手动生成的所有的实体模型
2、接着再自动生成Controller和View
3、测试
没错,自动配置就是这么的快,但从原理上讲手动设置更直观的明白每个地方的构造是干什么的,也可以进行灵活的设置及更改,方便最终的发布部署。