(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. 从无到有开发自己的Wordpress博客主题---Wordpress主题的构造

    在这篇教程中,主要是对Wordpress的主题的构造进行分析,以方便今后的开发工作. 本来打算就引用一下别人已经有的文档就好了,但还是想从头到尾捋一遍,也方便自己梳理学习. 1.Wordpress主题 ...

  2. 如何用 php 读取一个很大的 excel 文件。

    这个程序是用php 读取一个很大的excel文件, 先将 excel 文件保存成csv 文件, 然后利用 迭代器 逐行读取 excel 单元格的值, 拿到值以后 做相应处理,并打印结果. <?p ...

  3. HDU - 6197:array array array (简单LIS)

    One day, Kaitou Kiddo had stolen a priceless diamond ring. But detective Conan blocked Kiddo's path ...

  4. HDU - 5088: Revenge of Nim II (问是否存在子集的异或为0)

    Nim is a mathematical game of strategy in which two players take turns removing objects from distinc ...

  5. Linux C程序操作Mysql 调用PHP采集淘宝商品

    还是继续这个项目. 在上一篇Linux下利用Shell使PHP并发采集淘宝产品中,采用shell将对PHP的调用推到后台执行,模拟多线程. 此方法有一致命缺点,只能人工预判每个程序执行时间.如果判断时 ...

  6. thinkphp的select和find的区别(转)

    做普通PHP项目转thinkphp时,字段自动完整匹配,ajax时前台数据一直取不到,后发现是select和find返回数据集有差异,参考下面方法修改. $this->ajaxReturn($m ...

  7. Java 多个引用类型变量引用同一个对象

    引用类型变量在声明后必须引用对象才能使用. 一个引用变量只能唯一指向一个对象,但同一个对象可被多个引用类型变量引用. 如:MyDate today; //将变量跟配给一个保存引用的空间(栈) toda ...

  8. php redis 命令合集

    1.https://www.cnblogs.com/aipiaoborensheng/p/5666005.html 2.https://www.cnblogs.com/doanddo/p/734908 ...

  9. java代码用户界面网格布局GridLayout.划分为格子区域

    总结:网格布局.很简单,首先要new一个   this.setlayout(new GriedLayout(3,5));里面是行数和列数 package clientFrame; //网格布局练习 i ...

  10. MySQL存储过程中的3种循环,存储过程的基本语法,ORACLE与MYSQL的存储过程/函数的使用区别,退出存储过程方法

    在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...