2017年2月22日-----------乱码新手自学.net 之Entity Framework 增删改
由于我是自学的,没有人教,在网上查资料也查不到个所以然、问大神们也是爱理不理的。
所以这篇随笔纯粹源自于我自己的认识。是否真正正确我也没有把握。
如果有什么错误,请大神们给予指正
===========================================
(一)、增加、删除、修改操作,都可以直接调用dbset<>集合的Add()、AddRange()、Remove()、AddOrUpdate() 几个方法、然后调用DbContext.SaveChange()实例对象方法,实现增删改。
数据上下文baglEntities 中有一个actionlist的dbset集合
public partial class baglEntities : DbContext
{
public baglEntities()
: base("name=baglEntities")
{
} protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
} public virtual DbSet<actionlist> actionlist { get; set; }
}
public void test()
{
baglEntities bg=new baglEntities();
}
1、增加:bg.actionlist.Add(actionlist类型的对象); bg.SaveChange();
2、删除:bg.actionlist.Remove(从actionlist集合中查找到的对象); bg.SaveChange();
3、修改:bg.actionlist.AddOrUpdate(从actionlist集合中拿到的对象);bg.SaveChange();
=================================================================
教程上是这样说的,可是很多时候,我们找不到AddOrUpdate()方法?
(二)、利用状态跟踪实现增删改(EF中增删改的表层原理)
DbContext中有一个方法Entry(实体对象),这个方法要求传入一个实体对象,这个方法的返回值有一个state属性。bg.Entry(actionlist实体对象).state
这个state属性是一个EntityState枚举,该枚举包含5个值:Added、deleted、UNchanged、Modifield、Detached。 顾名思义,这个枚举用来标注实体对象的状态。
EntityState枚举这五个值的含义书面解释比较绕口,我用常用说法来解释下:
(1)Added:把指定对象的状态标注为增加。
(2)deleted:把指定对象的状态标注为删除。
(3)Modifield:把指定对象的状态标注为修改。
(4)UNchanged:把指定对象的状态标注为未改变(也就是这个实体对象从数据库中刚刚拿到,没有做任何改变)
(5)Detached:没有与dbset集合挂钩的对象的状态。
通过操作状态,给state属性赋状态,再调用SaveChange();方法,EF就能够自动的对对象进行增删改操作。
实际上,EF的ADD REMOVE 其实就是通过操作状态,之后根据实体对象的状态进行SQL的组装。假如给一个实体对象状态设置成Added。EF检测到这个对象状态为Added就会根据这个对象制作Insert 命令发往数据库。最终完成插入数据。
2017年2月22日-----------乱码新手自学.net 之Entity Framework 增删改的更多相关文章
- 2017年2月16日-----------乱码新手自学.net 之MVC模型
第二篇博文,最近学习的内容还是回到了正题:ASP.NET MVC5之上.虽然EF学了个一知半解,但是用这点知识,看MVC5的MODEL部分应该还是够了.尽管周末还要恶补一下EF才行. (一)MVC简述 ...
- 2017年3月14日-----------乱码新手自学.net 之Authorize特性与Forms身份验证(登陆验证、授权小实例)
有段时间没写博客了,最近工作比较忙,能敲代码的时间也不多. 我一直有一个想法,想给单位免费做点小软件,一切思路都想好了,但是卡在一个非常基础的问题上:登陆与授权. 为此,我看了很多关于微软提供的Ide ...
- 2017年2月28日-----------乱码新手自学.net 之特性与验证
现在看asp.net MVC5自学已经到了第六章:数据注解与验证. 话得从以前看MVC music store(音乐商店项目)的源码说起, 最初看music store源码完全就是一脸懵逼,整个程序, ...
- Python 爬虫练习(二)爬取补天公益SRC厂商域名URL (2017年11月22日)
介绍下: 补天是国内知名的漏洞响应平台,旨在企业和白帽子共赢. 白帽子在这里提交厂商漏洞,获得库币和荣誉,厂商从这里发布众测.获取漏洞报告和修复建议. 在2017年3月份之前,补天的厂商域名URL是非 ...
- 2017年5月22日 HTML基础知识(一)
一.Html 结构 1.1.HTML基本文档格式—<html> 标记 —<html>文档的头部好和主体内容 </html> 根标记 —<head> 文 ...
- 2017年10月22日 基础SQL语句&数据库创建主外键关系
1.SQL语句的注释 双减号:-- 或者/**/2.创建数据库create database 数据库名称(不允许以数字开头,不允许以符号开头,不要起汉语名字) 3.如何选中这个数据库use 数据库名 ...
- 2017年9月22日 关于JS数组
JS数组 JS数组的定义方法 var arr = []; var arr = new Array() JS数组属性 长度 arr.length 遍历数组 索引值:从0开始数 第一种方法 for(var ...
- 2017年9月22日作业 c++算术运算符 自增 自减 逻辑运算符 位运算符 条件运算符(三元运算符)
作业1: c++算术运算符试题,分析下面程序的输出结果是什么 //第一个: int x=8999;int value=x*1000/1000; //第二个 int x=8999;int value=x ...
- 微软SQL Server认证最新信息(17年5月22日更新),感兴趣的进来看看哟
之前一直有在关注微软认证的一些消息,由于最新的SQL Server认证加入了2016的相关内容,导致课程资料需要大部分更新,但是微软更新相对比较慢,并且经常改版,目前发现的最新的MCP Cert Pa ...
随机推荐
- UVa 10945 - Mother bear
题目大意:给一个字符串,判断是否回文(忽略大小写,忽略非字母字符). #include <cstdio> #include <cctype> #include <cstr ...
- SQLSERVER TRUE、FALSE、UNKNOWN
null和其他值比较都是unknown 在SQL中逻辑表达式的可能值包括TRUE.FALSE.UNKNOWN.他们被称为三值逻辑.三值逻辑是SQL所特有的.大多数的变成语言的逻辑表达式 只有TRUE或 ...
- jQuery对象插件封装步骤
jQuery是js的一个非常优秀的库,它大大简化了js的很多操作,并且解决了js的大部分兼容性问题.甚至很多css兼容性问题,用jQuery写都能解决. 这里是对象插件的封装.当然,封装插件很多,这里 ...
- Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender
Log4j现在已经被大家熟知了,所有细节都可以在网上查到,Log4j支持Appender,其中DailyRollingFileAppender是被经常用到的Appender之一.在讨论今天的主题之前, ...
- MonthCalendar控件
MonthCalendar控件 功能,直接显示月历,
- WPF 实现验证码功能
产生验证码的类:ValidCode.cs public class ValidCode { #region Private Fields /// <summary> /// PI /// ...
- VoiceEngine获取硬件信息
#include "webrtc\voice_engine\include\voe_base.h" #include "webrtc\voice_engine\inclu ...
- doubango(6)--Doubango协议栈中对RTP的管理
相关数据结构 1. tsip_dialog_invite_t 描述: 一个invite_dialog代表了一个invite期间的所有的信令流程,因此,它首先是一个普遍的dialog的特殊化结构, ...
- Flex移动应用程序开发的技巧和窍门(五)
范例文件 flex-mobile-development-tips-tricks-pt5.zip This is Part 5 of a multipart series of articles th ...
- 支付宝 Android 版使用的开源组件
支付宝 Android 版使用的开源组件 前言: 花了点时间整理了 支付宝 Android 客户端使用的开源组件,给需要的同学.在你不知道用什么开源框架的时候可以作下参考,毕竟支付宝是阿里的重量级产品 ...