• 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。

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

        未完待续……

  • 相关阅读:
    消息中间件与kafka(二)
    维度建模基本概念(二)
    阿里开源canal
    ETL-kettle报错--org.gjt.mm.mysql.Driver
    消息中间件与rabbitmq(一)
    python装饰器--这个很pythonic
    Swift开发小技巧--识别选中照片中的二维码
    Swift开发小技巧--扫描二维码,二维码的描边与锁定,设置扫描范围,二维码的生成(高清,无码,你懂得!)
    Swift开发小技巧--自定义转场动画
    Swift基础--通知,代理和block的使用抉择以及Swift中的代理
  • 原文地址:https://www.cnblogs.com/shendaxian/p/9444471.html
Copyright © 2020-2023  润新知