(1)//添加操作
public bool addDate()
{
try
{
//声明上下文
a_context = new AEntities();
//声明数据模型实体
//执行代码时候会先验证这些属性值是否符合约束,不然验证过不去就不会往下执行了
b1 = new Table_1();
b1.age = 20;
b1.name = "大沙漠";
//用上下文进行操作(上下文可以理解为就是数据库,就是对数据库进行操作)
//通过上下文指定数据表Table_1进行操作
//传入实例,Add是添加操作的一个封装操作
//和a_context.Entry<Table_1>(b1).State = EntityState.Added;是一样的
a_context.Table_1.Add(b1);
//告诉上下文,把表的变化保存到数据库
a_context.SaveChanges();
return true;
}
catch (Exception)
{
return false;
}
}

(2)//更新操作
public bool update()
{
try
{
a_context = new AEntities();
b1 = new Table_1();
//修改时候属性值要写全,不然会报错
//属性值要符合表的约束规范,不能为空的就不能为空,最大值为10就不能超过10
b1.name = "小山";
b1.age = 10;
//修改表实体,唯一标识符(一般是ID)要表面,底层对应sql语句的where条件,这是必须的
//记住修改和删除时候【必须添加】唯一标识符主键(id),这是把它理解为sql语句操作就对了
b1.id = 1;
//操作数据库的一个入口,指定泛型操作对象实例,State是状态的意思,指定Entry操作状态
//添加状态Added,修改Modified,删除Deleted,未改变的Unchanged.,分离(上下文和表分离,不再跟踪表实体变化,起到释放控制的作用,基本不用)Detached
//Entry<Table_1>这个泛型可以省略
a_context.Entry<Table_1>(b1).State = EntityState.Modified;

//可以一次进行多次更,删除,改操作。
b1 = new Table_1();
b1.name = "小李";
b1.age = 14;
b1.id = 2;
a_context.Entry<Table_1>(b1).State = EntityState.Modified;

b1 = new Table_1();
b1.name = "小河流";
b1.age = 15;
b1.id = 3;
a_context.Entry<Table_1>(b1).State = EntityState.Modified;

//变化更新到数据中,就是执行sql语句
//这里的保存变化是针对整个表进行操,不是某个sql语句执行,不管你对表进行多少才操作,这里只管把这个表更新到数据库中
//虽然不对,但可以这样理解他是把我们操作后的表整个替换掉数据库中的表的感觉,只是一种理解,真正的是变化是执行了相应的sql语句
a_context.SaveChanges();

return true;
}
catch (Exception)
{
return false;
}
}

(3)//只针对某单列或多列更新
public bool updateOne()
{
try
{
a_context =new AEntities();
b1 = new Table_1();
b1.name = "小明";
b1.id = 1;

//Attach表示附加的意思,要进行单列操作,首先要把指定附加在上下文,别管这是什么逻辑,这是要求,不写就不行,估计默认是Detached状态吧
a_context.Table_1.Attach(b1);
//还是指定表实例a_context.Entry<Table_1>(b1)
//Property是属性的意思,泛型指定属性类型(这里是字符串)
// => 是lambda表达式,是匿名函数简化的写法,=>前面的是参数,后面的是函数体。
//xx就是自己命名的匿名函数
//IsModified表示从数据库加载一个值,进行修改后再把修改保存回数据库,就是更改的意思。这是告诉上下文,我只对指定的这个属性进行修改而已
//这是一种强类型写法,属性类型是不会写错的,是通过点.出来,是编译后的结果
a_context.Entry<Table_1>(b1).Property<string>(xx => xx.name).IsModified = true;
//如果要修改多个列,则再加一个属性指定就行了

//还有另外一种方法,直观点,可以看出是对name这个属性进行修改,但是这是一种弱类型写法,如果name写错了呢?
//a_context.Entry<Table_1>(b1).Property("name").IsModified = true;

a_context.SaveChanges();

return true;
}
catch (Exception)
{
return false;
}
}

EF添加和修改的更多相关文章

  1. 【记录】EF Code First 实体关联,如何添加、修改实体?

    在使用 EF Code First 的时候,我们经常会对项目中的 Entry 进行一对多.多对多的映射配置,这时候就会产生主实体和子实体的概念,我们在添加.修改他们的时候,有时候会产生一些问题,比如添 ...

  2. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态

    本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...

  3. ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  4. MVC客户管理(添加、修改、查询、分页)

    ASP.NET MVC搭建项目后台UI框架—6.客户管理(添加.修改.查询.分页)   目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2 ...

  5. ExtJS 4.2 业务开发(三)数据添加和修改

    接上面的船舶管理业务,这里介绍添加和修改操作. 目录 1. 添加操作 2. 修改操作 3. 在线演示 1. 添加操作 1.1 创建AddShipWindow.js 在业务中的view目录下创建一个Ad ...

  6. MVC5 网站开发之八 栏目功能 添加、修改和删除

    本次实现栏目的浏览.添加.修改和删除. 栏目一共有三种类型. 常规栏目-可以添加子栏目,也可以添加内容模型.当不选择内容模型时,不能添加内容. 单页栏目-栏目只有一个页面,可以设置视图. 链接栏目-栏 ...

  7. TFS API:三、TFS WorkItem添加和修改、保存

    TFS API:三.TFS  WorkItem添加和修改.保存 WorkItemStore:表示跟踪与运行 Team Foundation Server的服务器的工作项客户端连接. A.添加工作项 1 ...

  8. PowerShell添加或修改注册表开机启动项脚本

    代码如下: $name = Read-Host "请输入开机启动项的名字(随便起)" $value = Read-Host "请输入开机启动项的值" try{ ...

  9. javascript里面的数组,json对象,动态添加,修改,删除示例

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

随机推荐

  1. 从微软官网下载VS离线安装包的方法

    这里描述是包括所有版本,截图以下载VS2017社区版为例: ①登入VS官网下载页面,选择需要的版本点击下载,下载页点此进入. ②下载完成后,打开下载文件所在文件夹,Windows 8.1及以上版本用户 ...

  2. Python判断unicode是汉字,数字,英文,或者其他字符

    功能: 判断unicode是否是汉字,数字,英文,或者是否是(汉字,数字和英文字符之外的)其他字符. 全角.半角符号相互转换. 全角.半角? 全角--指一个字符占用两个标准字符位置. 汉字字符和规定了 ...

  3. HDU - 6231:K-th Number (不错的二分)

    Alice are given an array A[1..N]A[1..N] with NN numbers. Now Alice want to build an array BB by a pa ...

  4. 【抽时间 试验】hibernate集合映射inverse和cascade详解

    http://www.cnblogs.com/amboyna/archive/2008/02/18/1072260.html

  5. 图解Fiddler如何抓手机APP数据包过滤抓取

    使用fidder抓取浏览器的包相信不是问题,那么使用fidder 抓取app的数据包呢??? 于是,找了一篇博客来学习一下,可以参考一下,根据自己的需求来实现. 在网上自己学习,然后整理了我所用到的, ...

  6. ACM学习历程—计蒜客15 单独的数字(位运算)

    http://nanti.jisuanke.com/t/15 题目要求是求出只出现一次的数字,其余数字均出现三次. 之前有过一个题是其余数字出现两次,那么就是全部亦或起来就得到答案. 这题有些不太一样 ...

  7. DispatcherServlet的处理流程

    前言 上一篇介绍了SpringMVC的启动过程,DispatcherServlet作为一个前端控制器,分发处理http请求 1.DispatcherServlet流程图 具体流程: 1. 用户发请求- ...

  8. sqlalchemy 学习(二)scoped session

    数据库设计的难点之一,是session生命周期的管理问题.sqlalchemy提供了一个简单的session管理机制,即scoped session.它采用的注册模式.所谓的注册模式,简单来说,是指在 ...

  9. fn project AWS Lambda 格式 functions

      Creating Lambda Functions Creating Lambda functions is not much different than using regular funct ...

  10. 关于bonecp和QuerRunner

    之前一直以为boneCP和QueryRunner是绑定的,但是其实不是,后者来自于commons-dbUtils,BoneCP就是负责连接池. while preparing SQL: UPSERT ...