zoukankan      html  css  js  c++  java
  • EntityFramework6

    一、实体状态

      EntityState枚举定义了实体的5种状态,包括:

    1. Added:添加;实体被context跟踪,但数据库中不存在,在SaveChanges时,将添加操作通知数据库
    2. Unchanged:未更改;实体被context跟踪和数据库中存在,实体属性值并未被改动
    3. Modified:修改;实体被context跟踪和数据库中存在,并且数据库中的属性值未被修改,在SaveChanges时,将修改操作通知数据库。
    4. Deleted:删除;实体被context跟踪和数据库中存在,但是已经标记为删除,在SaveChanges时,将删除操作通知数据库,并从context中清除。
    5. Detached:游离状态;实体未被context跟踪。

       实例:将新实体添加到context

    1.   新实体可以通过DbContxt对象调用Add方法添加到context。这时实体的状态是Added,紧接着通过DbContext对象调用SaveChanges方法将数据插入到数据库中。

            首先注入DbContext,

      1. private readonly DbContext _dbContext;
                public DSSuperRepository(DbContext dbContext)
                {
                    this._dbContext = dbContext;
                }

        接着创建实体数据并添加到数据库
      2. var book = new Book{Name = ".NET Book"};
      3. _dbContext.Add(book);
      4. _dbContext.SaveChanges();

     

      

      2.  将实体添加到context的另一种方法,将实体状态更改为Added

        这里还是使用上面已经注入的DbContex对象,

        var book = new Book{Name = ".NET Book"};

        _dbContext.Entry(book).State = EntityState.Added;

        _dbContext.SaveChanges();

      3.  实现实体插入或修改操作

        这里还是使用上面已经注入的DbContex对象,

        var book = new Book{bookId = 1;Name = ".NET Book"};

        _dbContext.Entry(book).State = book.bookId == 0 ? EntityState.Added:EntityState.Modified;

        _dbContext.SaveChanges();

        通过检查实体主键是否有值,主键没有值的情况下,将实体状态改为Added;主键有值的情况下,将实体状态改为Modified。

        这个简单的例子只是简单的诠释一个添加或修改的方法该如何实现。

        如果有人非得杠精的说,自己拿一个新的实体,然后给实体的主键附上值(原本的意思是要添加实体的),这里在处理的时候就会将实体的状态变为修改,最终操作就变成了修改操作,上面的例子完全不符合现实情况。那我只能说 :I 服了 YOU。

        这里重申一下,这只是一个实体插入或修改方法实现的思路,具体实现的时候要动动大脑做些调整。

        未完待续……

  • 相关阅读:
    ES6展开运算符的10个用法
    用react脚手架新建项目
    第六章 组件 56 组件-组件中的data
    第六章 组件 55 组件-使用components定义私有组件
    第六章 组件 54 组件-创建组件的方式3
    第六章 组件 53 组件-创建组件的方式2
    第六章 组件 52 组件-创建组件的方式1
    第六章 组件 51 组件化和模块化的区别以及组件的定义方式
    第五章 动画 50 动画-transition-group中appear和tag属性的作用
    第五章 动画 49 动画-实现列表删除和删除时候的动画效果
  • 原文地址:https://www.cnblogs.com/shendaxian/p/9444471.html
Copyright © 2011-2022 走看看