(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. mac root

    我在mac下,用su登录root用户 但是提醒 su:Sorry   然后按照网上的方法弄了好多次,都没成功,说是要修改/etc/group 文件中,wheel后添加自己的用户名,用逗号分隔多个用户, ...

  2. ubuntu 上查看文件的内容,二进制形式展现

    Vim 可以用来查看和编辑二进制文件 vim -b egenea-base.ko   加上-b参数,以二进制打开 然后输入命令  :%!xxd -g 1  切换到十六进制模式显示

  3. Http基础(记忆笔记)

    地址解析:http://localhost.com:8080/index.htm 协议名:Http 主机名:localhost.com 端口:8080 对象路径:/index.htm 通过域名解析lo ...

  4. SSH框架(1)

    一. SSH框架相关的面试题:   1.  BeanFactory的作用是什么?   [中] BeanFactory是配置.创建.管理bean的容器,有时候也称为bean上下文.Bean与bean的依 ...

  5. 重装Oracle时出现SID已存在问题的解决办法

    重装Oracle时出现SID已存在问题的解决办法    手机打开 注意安装oracle服务器的环境,不稳定导致数据库出现问题,后果很严重! 方法如下: 1.开始->设置->控制面板-&g ...

  6. 转载 TCPIP学习笔记之概述

    1.分层 网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能.一个协议族,比如 T C P / I P,是一组不同层次上的多个协议的组合. T C P / I P通常被认为是一个四层协议系统 ...

  7. noip积木大赛

    先要覆盖一号位置的高度,(现在你的目的只是想要覆盖一号位置). 每次你可以选区间[l,r]高度+1,这个作为一个操作. 为什么不选的范围大一点,让更多的区间增加高度呢. 所以红色的地方是,在我的目的是 ...

  8. UART驱动分析

    在linux用户层上要操作底层串口需要对/dev/ttySxxx操作,这里的ttySx指实际的终端串口. 以下以全志A64为实例,分析UART驱动以及浅谈TTY架构. linux-3.10/drive ...

  9. Maven依赖调解

    引用来自maven实战中的一段话.

  10. 笔记:C 编译过程

    笔记:C 编译过程 参考了 编译器的工作过程 1 C 编译过程 配置 确定标准库和头文件位置 确定依赖关系 头文件的预编译 预处理 编译 连接 F4NNIU 2018-06-12 编译器的工作过程 h ...