MVC学习-用EF做增删改查

在DbContext中有两个很重要的方法:

一、几个方法的说明

1.一个是Entry()方法:

public DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity : class;

可以将 任何类型的数据放入到上下文对象中

DbEntityEntry有个 属性EntityState,它可以为上下文中的对象做标识,并依照标识的值做相应的sql操作

public enum EntityState
    {
        Detached = 1,
        Unchanged = 2,
        Added = 4,
        Deleted = 8,
        Modified = 16,
    }

2.还有一个Set()方法

public DbSet<TEntity> Set<TEntity>() where TEntity : class;


//通过public DbSet<TEntity> Set<TEntity>() where TEntity : class;和

//public virtual DbSet<Users> Users { get; set; }知道

//Set<Users>就是Dbset<Users>类型,所以context.Set<Users>()就等价于context.Users

3.操作中几个方法的说明:

SaveChange():EF在SaveChanges的时候,会遍历上下文内容器里的所有实体对象,并检查对象的State 属性,生成相应的SQL语句,在一次性发到数据库中执行

几个知识点:

1.上下文内部默认实现了,对其中的对象进行了追踪。当A取出数据准备修改Data时;这个时候B可以取出数据Data,但不能修改,因为当前追踪器在A那边,直等到A释放了资源,B才可进行相应的操作。

 

二、增删改查

1.增

//1.创建上下文对象,因为上下文对象中包含要操作的对象Users
MyDBEntities context = new MyDBEntities();
//2.因为Entry需要传入一个对象,所以创建要添加的类型的对象
Users u = new Users() {Name = "kim", Age = 23};
//3.使用标记的方式来做增加
context.Entry<Users>(u).State=EntityState.Added;
//4.保存到数据库,因为EF是延迟操作的,如果不执行List()等操作,不会执行sql语句
context.SaveChanges();

2.删

2.1根据Id(表的主键)删除

//1.创建一个包含主键的对象
Users u = new Users() { Id = 3 };
//2.标识为删除
context.Entry<Users>(u).State = EntityState.Deleted;
//3.保存到数据库
context.SaveChanges();

2.2根据非主键删除

//1.要删除的条件,这里是要删除name为Kim的项
 string name = "Kim";
//2.获得name为Kim的对象
 var s1 = from s in context.Users
          where s.Name==name
          select s;
//3.如果有多个的话就用foreach()遍历,这里就删除第一个
context.Users.Remove(s1.FirstOrDefault());
//4.保存到数据库
context.SaveChanges();

3.改

//1.获得要更新后的数据,在mvc中的Action方法,可直接获得 更新后的对象
Users u = new Users() { Id = 4, Name = "kim" };
//2.标识为修改
context.Entry<Users>(u).State = EntityState.Modified;
//3.保存到数据库
context.SaveChanges();

4.查

4.1普通查

//查询Name为Kim的全部数据
var s = context.Users.Where(u => u.Name == "Kim").Select(u => u);

4.2分页查

/// <summary>
/// 分页查询
 /// </summary>
/// <typeparam name="T">要操作的数据类型</typeparam>
/// <param name="whereLambda">Where条件语句</param>
/// <param name="orderLambda">按什么条件排序</param>
 /// <param name="pageSize">每页都少条数据</param>
/// <param name="pageIndex">要查询第几页</param>
  /// <returns>返回一个泛型集合</returns>
 static List<T> GetPageList3<T>(Func<T, bool> whereLambda, Func<T, object> orderLambda, int pageSize,
  int pageIndex) where T : class
   {
         MyDBEntities context = new MyDBEntities();
         var list =  context.Set<T>().Where(whereLambda).OrderBy(orderLambda).Skip((pageIndex - 1) * pageSize).Take(pageSize);
         return list.ToList();
 }
时间: 2024-10-25 23:50:12

MVC学习-用EF做增删改查的相关文章

MVC+EF 的增删改查操作

1. //创建EF映射对象数据集 static Models.db_JiaoYouEntities DbDeleteData = new Models.db_JiaoYouEntities(); 2. #region 得到数据集合+Query() /// <summary> /// 得到数据集合 /// </summary> /// <returns></returns> public List<Models.tb_Msg> Query() {

[EF]使用EF简单增删改查

目录 认识EF 添加数据 删除数据 修改数据 查询数据 总结 认识EF ADO.NET Entity Framework 是微软以ADO.NET为基础所发展出来的对象关系对伊(O/R Mapping)解决方案,早起被称为ObjectSpage,最新版本EF6. 实体框架Entity Framework是ADO.NET中的一组支持面向数据的软件应用程序的技术.是微软的一个ORM框架. 什么是O/R Mapping 广义上,ORM指的是面向对象模型和关系数据库的数据结构之间的相互转换. 狭义上,OR

Android学习---SQLite数据库的增删改查和事务(transaction)调用

上一篇文章中介绍了手工拼写sql语句进行数据库的CRUD操作,本文将介绍调用sqlite内置的方法实现CRUD操作,其实质也是通过拼写sql语句. 首先,创建一个新的android项目: 其次,查看代码实现增删查改: 1.创建DB工具类 MyDBHelper.java(创建数据库的操作) package com.amos.android_db; import android.content.Context; import android.database.sqlite.SQLiteDatabas

python学习之-员信息增删改查

python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证, #!/usr/bin/env python# coding=utf8#author:[email protected] import os, sys, time,jsonimport re member_dict = \ {}member_name_list = []member_list = []def handler_mem

sqlHelper做增删改查,SQL注入处理,存储值,cookie,session

一.存储值 eg:登录一个页面,在进入这个页面之前你怎么知道它登没登录呢?[在登录成功之后我们把状态保存起来] 存储值得方式有两种,一种是cookie,一种是session 1.1区别: 代码: if (SqlHelper.Exists(sSql, para)) { //cookie保存状态 if (chkRPwd.Checked) { Response.Cookies["name"].Expires = DateTime.Now.AddMinutes(1);//设置过期时间 //删除

MVC + EF 框架 对数据库做增删改查

这几天一直在看MVC 开发模式,其中借助EF框架对数据库进行 增删改查操作 现在就小小的总结一下吧 在使用EF操作数据库时,会首先添加 ADO.NET数据模型,这时,会为我们添加一个数据上下文类,使用这个类的对象可以对数据库做任何操作.所以在使用EF操作数据库之前 需要创建数据上下文对象. MyDatabaseEntities mde = new MyDatabaseEntities(); 1.使用EF 对数据库 做增加操作 1.1 创建一个需要被操作数据表的对象(一般来说 ,一张表就是一个实体

EF CodeFirst增删改查之‘CRUD’

最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    本篇旨在学习EF增删改查四大操作 上一节讲述了EF CodeFirst 创建数据库,本节继续引用上一节的相关类学习EF的CRUD操作 废话少说,直接上要点,上一节中的模型类我作了如下修改: using System; using System.Collections.Generic; using System.ComponentModel.Data

TP5学习基础一:增删改查小demo

①TP5--增删改查简单的demo 我先吐槽一下:因为工作需要研究tp5,去官网看了一下哎呦,资源挺多挺全啊!然后下载唯一免费的官方教程,我曹pdf打开533页.讲的很细但是开发能等看完才做吗?看到精简版快速入门的还软妹币20试读3章.寻思找个demo案例吧,要不加群拿源码,要不视频教程收费.特喵的框架是开源的但是教程是收费的.寻思去论坛看看问题,不是我喷好多技术小白的问题,我想看看怎么获取传参传值,泥煤那个系统变量是什么鬼?挣扎了3个小时我放弃了官网.在度娘上找到一个demo,吭哧吭哧啃完.一

asp.net下利用MVC模式实现Extjs表格增删改查

在网上看到有很多人写extjs下的表格控件的增删改查,但是大多数都是直接从后台读取数据,很少有跟数据库进行交互的模式. 今天就来写一个这样的例子.欢迎大家交流指正. 首先简单介绍一下MVC模式,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写. Model(模型) 是应用程序中用于处理应用程序数据逻辑的部分.通常模型对象负责在数据库中存取数据. View(视图) 是应用程序中处理数据显示的部分.通常视图是依据模型