• 实体的状态


    数据库上下文对象维护内存中的对象与数据库中数据行之间的同步。这些信息在调用 SaveChanges方法被调用的时候使用。例如,当使用 Add 方法传递一个新的实体对象时,实体的状态被设置为 Added,在调用 SaveChanges方法的时候,数据库上下文使用 SQL 命令 Insert来插入数据。

    实体的状态可能为如下之一:

    1.  Added. 实体在数据库中不存在。SaveChanges 方法必须执行 Insert 命令
    2.  Unchanged. 在调用 SaveChanges 的时候不需要做任何事情,当从数据库读取数据的时候,实体处于此状态。
    3.  Modified. 某些或者全部的实体属性被修改过. SaveChanges方法需要执行 Update 命令。
    4. Deleted. 实体标记为已删除,SaveChanges 方法必须执行 Delete 命令。
    5. Detached. 实体的状态没有被数据库上下文管理。

    在桌面应用程序和Web应用程序中的运行

    在桌面应用中,实体的状态改变典型地自动完成。在这种类型的应用中,你读取一个实体,然后修改某些属性的值,这使得实体的状态被自动修改为 Modified。然后,在调用SaveChanged 的时候,实体框架生成 Update 命令进行更新,只有你修改的实际属性被更新。

    但是,在 Web 应用程序中,这个处理序列不是连续的。因为数据库上下文读取的实体对象实例在页面被呈现之后被丢弃了。当 HttpPost Edit 方法被调用的时候,导致一个新的请求和一个新的数据库上下文对象被生成,所以,你必须手工设置实体的状态为 Modified。然后调用 SaveChanges 方法,实体框架更新数据库中数据行的所有列,因为数据库上下文没有办法知道你修改了哪些属性。

    NET技术交流
  • 相关阅读:
    Access Violation
    虚拟目录的配置(tomcat服务器)
    CSS3 实现滚动字幕效果(即跑马灯)
    css3 textshadow
    iScroll4 禁止select等页面元素默认事件的解决方法
    软件评测师考试总复习19(文档测试)
    软件评测师考试总复习15(兼容性测试)
    软件评测师考试总复习16(标准符合性测试)
    软件评测师考试总复习17(易用性测试)
    软件评测师考试总复习18(可靠性测试)
  • 原文地址:https://www.cnblogs.com/Relict/p/2511835.html
Copyright © 2020-2023  润新知