(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调试配置外网可访问

    1.首先找到项目的配置文件夹(一般是隐藏的) 2.在里面的config文件夹找到applicationhost.config配置文件,打开,在sites节点找到你项目的那个site配置,新建一个绑定:

  2. python库之selectors

    在之前的博客中已经总结过分别在windows和linux操作系统下实现socket高并发(I/O异步)的方法,可以参考基于epoll的TP传输层实现和Windows之IOCP 下面对Python中实现 ...

  3. 5,基于关系和超链接的 API

    Tutorial 5: Relationships & Hyperlinked APIs At the moment relationships within our API are repr ...

  4. LA3263 That Nice Euler Circuits

    题意 PDF 分析 欧拉定理:设平面内顶点数.边数.面数分别为\(V,E,F\),则\(V+F-E=2\). 枚举每对线段求交点,注意去重. 另外注意第n个端点和第一个端点重合. 时间复杂度\(o(T ...

  5. WPF简单模拟QQ登录背景动画(转)

    介绍 之所以说是简单模拟,是因为我不知道QQ登录背景动画是怎么实现的.这里是通过一些办法把它简化了,做成了类似的效果 效果图 大体思路 首先把背景看成是一个4行8列的点的阵距,X轴Y轴都是距离70.把 ...

  6. 【Swift】- UITextField完成输入后关闭软键盘的几种方法

    总结了以下几种方式,欢迎补充  1,为空白区域绑定Touch Up Inside事件  2,重写touchesEnded方法  3,为TextField绑定Did End On Exit事件 1,点击 ...

  7. 十大Java人物

    James Gosling : Java之父文/陶文 作 为Java之父,James Gosling的名字可谓是耳熟能详.当人们评论一种编程语言时,总喜欢捎带着把下蛋的母鸡一起带上.Java做为中国的 ...

  8. oscache源码浅析

    oscache作为本地缓存框架,存储模型依然是通用的缓存键值对模型.oscache使用HashTable存放数据,我们看下源码: GeneralCacheAdministrator: /** * Ge ...

  9. 【Python学习笔记】输出现在的时间

    print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) 2016-01-27 21:40:25

  10. nginx.conf解读

    通常我们需要配置nginx.conf或者配置子项目的配置文件,那么我们需要解读它里面每一个参数的意义,就来个范例解读吧(有中午注释) #运行用户 user www-data; #启动进程,通常设置成和 ...