Linq定义了一组标准查询符号,标准查询符允许查询作用于所有基于IEnumerable<T>接口源。

  我们看看LINQ的总体架构。如下图所示

      

EF4.1 数据操作及持久化,常见的是DataBase-First与Code-First。

  DataBase-First是基于已经存在的数据库,利用VS提供的EF设计器创建实体类,数据库对象与实体类的匹配关系,当然,可以手动修改这些自动生成的代码及匹配文件。

  Code-First这种方式需要先写一些代码,如实体对象,数据关系等,然后根据已有的代码自动创建数据对象。

  首先来看看 Database-First的Demo。

  首先我们使用EF4.1,即Linq to Entities来创建一个控制台应用程序。

  VS2010中通过ADO.NET Entity Data Model(.edmx文件)生成实体类。

  首先我们将在数据库中建立一个数据库:Student。

  然后建立两张数据表,其中SID与StudentID存在外键的关系(示例,表设计的不合理),在数据库中一定要明显的指出这种关系,否则后面的代码将会存在编译不通过的问题。

  SourceInfo

SourceID [int] IDENTITY(1,1) NOT NULL,//课程表主键
SourceName [nvarchar](50),//课程名称
StudentID [decimal](18, 0) NULL //外键,学生表的主键

  StudentInfo

SID [decimal](, ) NOT NULL,//学生表主键
SName [nvarchar](),//学生姓名
SAge [int] NULL //学生年龄

  我的表中数据如下

  创建.demx 文件,步骤如下图所示

    1、

    2、

    3、

    4、

     点击完成,这样我们就建立好了edmx文件。

     此时VS自动为我们生了一个类StudentEntities,继承类ObjectContext,并且为每一个数据库表映射出实体对象。ObjectContext这个类应该了解。

     初学数据操作,往往都是“增删改查”。

     No1、这里我们找出每个学生的姓名,年龄以及他们所选所以课程名称。代码如下

    Main()函数代码

        StudentEntities StudentDB = new StudentEntities();
IList<StudentInfo> studentInfo = StudentDB.StudentInfoes.ToList<StudentInfo>();
       //var studentInfo = from c in StudentDB.StudentInfoes
            //                  select c; //Linq
foreach (var student in studentInfo)
{
Console.WriteLine(student);
string sourceName=string.Empty;
foreach (var source in student.SourceInfoes)
{
sourceName += source.SourceName+" ";
}
Console.WriteLine("所选课程有:" + sourceName);
}
Console.ReadKey();

    然后我们重写了Studnet类的ToString()方法,代码如下

 public partial class StudentInfo
{
public override string ToString()
{
return string.Format("姓名:{0} 年龄:{1}", this._SName, this._SAge);
}
}

    运行效果如图 简单的查询功能完成。

No2、向表StudentInfo插入一条数据,代码如下

 StudentInfo StudentModel = new StudentInfo
{
SID = ,
SName = "汗.斯米尔顿",
SAge =
};
StudentDB.StudentInfoes.AddObject(StudentModel);
StudentDB.SaveChanges();

    No3、将表StudentInfo钟SID=4的学生年龄改为55

    这里有两种方法可以修改 一种是直接更新 :通过ObjectStateManage来控制修改状态

 StudentInfo StudentModel = new StudentInfo{
SID = ,
SName = "汗.斯米尔顿",
SAge =
}; StudentDB.StudentInfoes.Attach(StudentModel);
StudentDB.ObjectStateManager.ChangeObjectState(StudentModel, System.Data.EntityState.Modified);
StudentDB.SaveChanges();

  另外一种是先把数据取出来,然后指定需要修改的列名,最后更新,代码如下

       var ModSID=;
var StudentModel = StudentDB.StudentInfoes.SingleOrDefault(c => c.SID == ModSID);
StudentModel.SAge = ;
StudentDB.SaveChanges();

  No4、删除SID=4的学生信息(不涉及课程表),代码如下

        var ModSID = 4;
            var StudentModel = StudentDB.StudentInfoes.SingleOrDefault(c => c.SID == ModSID);
            if (StudentModel != null)
            {
                StudentDB.DeleteObject(StudentModel);
                StudentDB.SaveChanges();
                Console.WriteLine("删除信息成功!");
            }
            else
            {
                Console.WriteLine("你想删除的信息不存在!");
            }

  这样linq to Entities 简单增删改查就完成了。

MVC 学习(一)Linq to Entities 简单Demo的更多相关文章

  1. MVC 学习(二)之Linq to Sql 简单Demo

    Linq to Entities 已经我的一篇博文中阐述了,这里阐述一下简单的Linq to Sql 的增删改查.Linq to sql 与Linq to Entities虽然同属于DataBase- ...

  2. ASP.NET MVC学习---(三)EF简单增删改查

    那么现在我们已经大概从本质上了解了ef 巴拉巴拉说了一大堆之后 总算要进入ef的正题了 总在口头说也太不行了是吧~ 没错,现在要用ef进行一些实际的操作 做什么呢? 就做一个入门级的增删改查操作吧 废 ...

  3. Asp.Net MVC学习总结(一)——Asp.Net MVC简单入门

    一.MVC简单入门 1.1.MVC概念 视图(View) 代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet. 模型(Model) 表示用户对其数 ...

  4. MVC学习笔记(四)---使用linq多表联查(SQL)

    1.数据库原型(Students表中的ID和Scores表中的StudentID是对应的) 2.实现效果:查询出每个学生各个科目的成绩(用的是MVC学习笔记(三)—用EF向数据库中添加数据的架构) C ...

  5. mvc ef LINQ to Entities 不识别方法“Int32 Parse(System.String)”,因此该方法无法转换为存储表达式。

    private sys_User GetUserInfo() { sys_User model = null; var userId = Convert.ToInt32(AccountHelper.G ...

  6. Linq to entities 学习笔记

    Linq to  entities ---提供语言集成查询支持用于在概念模型中定义的实体类型. 首先可以根据http://msdn.microsoft.com/en-us/data/jj206878该 ...

  7. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  8. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  9. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

随机推荐

  1. 初识AutoMapper

    在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层.业务逻辑层.服务层.数据访问层.层与层访问需要数据载体,也就是类.如果多层通用一个类,一则会暴露出每层的字段,二者会使类字段很多,而 ...

  2. Service的启动,绑定,绑定后通信,跨应用绑定,跨应用绑定后通信

    Service介绍: 与Acitivity平级的Android四大组件之一,对比Activity而言,就是没有交互界面,且可以一直在后台执行,只用于处理下载,I/O等长时间信息交流的任务. Servi ...

  3. jquery接触初级-----ajax 之:load()方法

    jquery _ajax 请求主要有几种方式:load(),$.get(),$.post(),$.ajax(),$.getScript(),$.getJson() 1.load()方法 格式:load ...

  4. JULIA BOORSTIN — Interview a Broadcaster!

    JULIA BOORSTIN — Interview a Broadcaster! Share Tweet Share Tagged With: Interview a Broadcaster Stu ...

  5. ReactiveX 学习笔记(2)创建数据流

    操作符(Operators) Rx 的操作符能够操作(创建/转换/组合) Observable. Creating Observables 本文主题为创建/生成 Observable 的操作符. 这里 ...

  6. OPENWRT路由3G拔号实验

    以下摘自:http://www.right.com.cn/forum/thread-155168-1-1.html 首先下载 Barrier Breaker 14.07 固件 配置好网络,可以访问到i ...

  7. C# WINFORM 打包数据库

    实现效果:安装项目时直接附加数据库. 1.首先在需要部署的项目的解决方案资源管理器中新建一个安装项目   2.在安装项目的文件视图中,右键[应用程序文件夹]->[添加]->[项目输出]   ...

  8. LISTVIEW显示JPEG缩略图

    http://www.ctsys.cn/files/SHOW_FILES.ASPX?ID=22 许多的JPEG图片浏览器(如由我设计的<JPEG浏览缩放器>),都可以将JPEG缩略图放置到 ...

  9. ArcGIS Python编程案例-电子资料链接

    ArcGIS Python编程案例(1)-Python语言基础 https://www.jianshu.com/p/dd90816d019b ArcGIS Python编程案例(2)-使用ArcPy编 ...

  10. C++ 关于MFC List Control 控件的使用事项 原创

    1\在开发项目时,使用到了 listcontrol 控件,就一些问题,做一下备注,以备以后使用 (1)  给list项目 删除所有的项目  DeleteAllItems(); (2) 给list项目 ...