知识回顾:
昨天简单的学习了然后新建SQL Severt的数据库,并简单的创建表设置主键、是标识、如何简单的查询到表的内容
今天的学习内容:
通过mvc在控制器中接收查询到昨天新建表的内容
刚开始的时候我们简单的说过mvc对应的三个文件含义是声明
model 模型 (通过映射将数据库的表映射到model,就可以查询表,同时它也具有添加、删除、修改等操作)
view 视图 (展示页)
controlled 控制器 (获取数据 对视图的一下请求处理)
正式学习:
通过model查询数据库的表内容
一、重新键一个mvc空项目,用来学习重新数据库的表
新建项目的时候还是重新添加一个文件夹存放的框架内容等,复制我们需要的文件到里面
添加一个控制器并命名为ModelSQL
添加视图,输入内容启动是否创建成功
简单的创建一个按钮
二、选择model右键添加新建项
二、找到左边的数据,找到实体数据模型并命名
默认点击下一步
点击连接,连接是与数据库连接,选择第一个并继续
三、打开数据库,复制登陆页面的服务器名称
将复制的服务器名称到下面的第一个框框,可以选择SQL的身份验证,默认是window身份验证,在左下角点击测试连接是否连接成功
选择或输入数据库名称是与我们SQL里面包含的数据库对应的,找到昨天创建的student数据库即可
下一步之后,实体框架默认,然后下一步
选择我们只创建了一张表,如果有多张表需要哪一张就点击那一张,全选就点击表前面的复选框,点击确认等待,如果弹出什么框继续点击确认就好
五、相应的文件
当文件自动创建成功就会出现一下实体
左边是表的字段,如果有多张表也会一列显示出来
右边model文件夹会出现一些自动生成文件不要动
文件
1对应数据库的字段
2对应设计器
3对应配置文件
4对应student.cs对应的是数据库
表映射过来之后生成一个类 点击student查看
public 公共的可以去访问
int 数据了些
数据库的nvarchar(n)转变成了string字符串
如果多张表就会生成多个实体类对应的
六、通过实体类查询数据库的内容
不能直接去调用实体类的,要在前面对实体类实例化
Models在后面的的时候会出现提示
在红色框框内选择按F12会跳转到下面的类里面
myModel是我们自己命名的名字
当我们选中红色框框的内容后,按F12跳转到下图的位置
静态类可以直接调用里面的方法,实例类不可以直接调用,要实例化才能使用
通过实例对象myModel就可以调用查询表的数据
七、创建一个方法来接收SQL的数
方法创建完成之后直接运行,会出现下图效果
解决方式:在顶部URL位置上输入控制器名称和调用的方法即可
断点调试:
当我们鼠标移入ModelsStud会出现下面的错误提示,并没有出现我们提示的信息
通过ToList()强行执行这一句代码,再次调式的时候鼠标移入ModelsStud将会出现我们数据库的表的内容
另外说明:
当我们真正要返回映射数据库表里的内容时,是不能够在使用Content();来返回了
因为我们返回的不是一个字符串了
需要返回JSON类型才能被解析,将查询出来的数据丢进去,就换转换成JSON
JSON需要转化成js对象才能被js使用
public ActionResult myStudentModels()
{
// linq语句查询
// custom 表名 名字不一可以自定义命名
// myStudent.student 通过类找到数据库的表
var ModelsStud = (from custom in myStudent.student // 查询整个表的数据
select custom).ToList(); // ToList() 强行执行
// return Content(""); 返回的因为不是字符串,所有不能用
// 会将我们查询到的内容转换成JSON字符串 JsonRequestBehavior请求行为 AllowGet允许 如果不加此语句会获取不到我们需要的内容
return Json(ModelsStud , JsonRequestBehavior.AllowGet);
}