MVC中,使用linq过滤重复数据,怎么解决数据权限有关问题

本帖子已过去太久远了,不再提供回复功能。2015年2月 总版技术专家分月排行榜第二
2015年2月 Web 开发大版内专家分月排行榜第一2015年1月 Web 开发大版内专家分月排行榜第一2014年12月 Web 开发大版内专家分月排行榜第一2014年11月 Web 开发大版内专家分月排行榜第一2014年10月 Web 开发大版内专家分月排行榜第一
2016年1月 总版技术专家分月排行榜第二2015年11月 总版技术专家分月排行榜第二2015年10月 总版技术专家分月排行榜第二
优秀小版主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。VS2013&ASP.NET&MVC4&中使用&LINQ&TO&SQL
一、建立数据库
在解决方案管理器右键APP_DATA,新建SQLServer数据库,如果没有该选项,转到 &。
二、建立模型
在models文件夹右键添加新建项,选择LINQ TO SQL类
名称为 DataClasses1.dbml,双击第一步建立的mdf文件,打开数据库。建立数据表,结构为
&CREATE TABLE [dbo].[P_name] (
INT&&&&&&&
&&& [name] NCHAR
(10) NULL,
INT&&&&&&&
&&& PRIMARY KEY
CLUSTERED ([Id] ASC)
表名为P_name
双击打开DataClasses1.dbml,拖动建立的数据表 P_name到DataClasses1.dbml中。
同时,在数据库中添加几条记录备用。
三、配置WEB.CONIFG文件
修改配置节:
将标红的部分修改为第一步建立的数据库文件名,将标蓝的部分做相应的修改。
四、完成Controller
打开HomeController.cs,做如下修改:
public ActionResult Index()
&&&&&&&&&&
// ViewBag.Message = "Modify this template to jump-start your
ASP.NET MVC application.";
&&&&&&&&&&&
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
&&&&&&&&&&&
//需要写入数据库连接参数
&&&&&&&&&&&
var DataContext = new DataClassesDataContext(conn);
&&&&&&&&&&&&
var n = from a in DataContext.P_name
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&
return View(n.ToList());
使用标红部分,需要做引用:
using System.Collections.G
using System.L
using System.W
using System.Web.M
using System.C
using System.D
using System.Data.SqlC
using Mvc4BootsrapDemo.M
五、完成View
在View目录选择Home,添加视图Index
注意使用强类型,如图选择模型,选择模板List,运行即可显示数据表内容。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。1859人阅读
& & &上篇博客中简单的介绍了MVC的组成以及各部分的作用。这篇博客将介绍MVC+linq+EF框架实现对数据表的查询、删除、修改。
先说一下什么是Linq?
& & &linq是基于关系数据的.net语言集成查询,用于对象形式管理关系数据。在本篇博客的实例中主要使用linq进行查询数据。
再说一下什么是EF?
& & 说到EF不得不先说一下ORM,ORM全称:(Object-Relation& Mapping)即对象-关系映射。ORM是将关系数据库中的业务数据用对象的形式表现出来,并通过面向对象的方式将这些对象组织起来,实现系统业务逻辑的过程。ORM做到了关系数据和对象数据之间的映射,ORM可以通过映射关系自动产生SQL语句,ORM在业务逻辑层和数据层之间充当桥梁。
& 当我们通过应用程序对数据库执行CRUD时,通过EF方式,实际上是对ObjectContext的操作,ObjectContext相当于EF的入口,ObjectContext拿到对应的消息(CRUD)后,通过ORM中的Mapping来将对象O映射成数据库中的关系R。我们通过图来看下Mapping中存储的内容。
对数据表的查询、删除、修改实例
& 1.使用DBFirst的方式实现对数据库进行映射。
& & 2.在Controllers文件夹新建控制器,利用EF框架和linq写出查询、删除、修改。
/// &summary&
/// 查询数据库中学生姓名
/// &/summary&
/// &returns&&/returns&
public ActionResult Index()
//使用linq,查询数据上下文中的学生姓名
List&Models.T_student& list = (from d in db.T_student select d).ToList();
//将集合数据传给视图
ViewData[&DataList&] =
return View();
&span style=&white-space:pre&& &/span&/// &summary&
/// 根据学生ID删除学生
/// &/summary&
/// &param name=&id&&学生ID&/param&
/// &returns&&/returns&
public ActionResult Del(string id)
//创建要删除的实体,并将ID赋值给实体对象
T_student modelDel = new T_student() { studentId = id };
//将实体对象添加到EF管理容器
db.T_student.Attach(modelDel);
//将实体对象包装类标示为删除状态
db.T_student.Remove(modelDel);
//更新数据库
db.SaveChanges();
//更新成功,跳转到Index
return RedirectToAction(&Index&,&MyClass&);}
#region 显示要修改的数据
/// &summary&
/// 显示要修改的数据
/// &/summary&
/// &param name=&id&&要修改的学生ID&/param&
/// &returns&&/returns&
public ActionResult Modify(string id)
//根据学生ID,查询数据库,返回集合中拿到第一个实体对象
T_student ts = (from a in db.T_student where a.studentId == id select a).FirstOrDefault();
//查询课程名称
IEnumerable&SelectListItem& listItem=(from c in db.T_class select c).ToList().Select(c=&new SelectListItem{Value=c.classId.ToString(),Text=c.className});
//查询到的课程名称给Viewbag
ViewBag.classList = listI
//使用View,将数据传给视图上名为model的属性
return View(ts);
#endregion
#region 保存要修改的数据
[HttpPost]
/// &summary&
/// 保存要修改的数据
/// &/summary&
/// &param name=&id&&要修改的学生ID&/param&
/// &returns&&/returns&
public ActionResult Modify(T_student ts)
//将实体对象加入EF对象容器中,并获取包装类对象
DbEntityEntry&T_student& entry=db.Entry&T_student&(ts);
//将包装类设置为unchange
entry.State = System.Data.EntityState.U
//设置被改变的属性
entry.Property(a=&a.studentName).IsModified=
entry.Property(a =& a.classId).IsModified =
//提交更新到数据库
db.SaveChanges();
//更新成功,跳转到Index
return RedirectToAction(&Index&, &MyClass&);
#endregion
& & 3.添加查询列表视图(Index.cshtml)
@using MyMvcTest.Models
&!DOCTYPE html&
&meta name=&viewport& content=&width=device-width& /&
&title&Index&/title&
&style type=&text/css&&
border:1px solid #0094
border-collapse:
#tblist th, td {
border:1px solid #0094
padding:10
&table id=&tblist&&
&th&id&/th&
&th&姓名&/th&
&th&课程ID&/th&
&th&编辑&/th&
&!--变量action方法 设置viewData的集合数据生成html--&
@foreach (T_student student in ViewData[&DataList&] as List&T_student&)
&td&@student.studentId&/td&
&td&@student.studentName&/td&
&td&@student.classId&/td&
&a href=&/MyClass/del/@student.studentId&&删除&/a&
&a href=&/MyClass/modify/@student.studentId&&修改&/a&
& & 4.添加“修改”视图(modify.cshtml)
@model MyMvcTest.Models.T_student
&!DOCTYPE html&
&meta name=&viewport& content=&width=device-width& /&
&title&Modify&/title&
&style type=&text/css&&
border: 1px solid #0094
width: 600
margin: 10
border-collapse:
#tblist th, td {
border: 1px solid #0094
padding: 10
@using (Html.BeginForm(&Modify&, &MyClass&, FormMethod.Post))
&table id=&tblist&&
&td colspan=&2&&修改:@Html.HiddenFor(a=&a.studentId)&/td&
&td&课程名称&/td&
&!--使用HtmlHepler,直接从model获取数据赋值给下拉框--&
&td&@Html.DropDownListFor(a =& a.classId, ViewBag.classList as IEnumerable&SelectListItem&)&/td&
&td&学生姓名&/td&
&!--使用HtmlHepler,直接从model获取数据赋值给文本框--&
&td&@Html.TextBoxFor(a =& a.studentName)&/td&
&td colspan=&2&&&input type=&submit& value=&确定修改&&@Html.ActionLink(&返回&, &Index&, &MyClass&)&/td&
& & 通过这个实例的实现,从宏观上了解了mvc和EF结合运用的发挥的优点。也学习到了EF的强大,可以让程序员更注重业务逻辑,而不是注重sql语句的编写。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:191292次
积分:5603
积分:5603
排名:第4422名
原创:131篇
转载:11篇
评论:1919条
(1)(1)(4)(5)(4)(7)(4)(4)(4)(2)(4)(3)(5)(4)(2)(4)(2)(3)(3)(4)(4)(2)(4)(4)(4)(4)(5)(4)(4)(4)(4)(4)(4)(4)(4)(7)(3)(3)(1)}

我要回帖

更多关于 数据使用权限管理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信