2017年2月22日-----------乱码新手自学.net 之Entity Framework 增删改

由于我是自学的,没有人教,在网上查资料也查不到个所以然、问大神们也是爱理不理的。

所以这篇随笔纯粹源自于我自己的认识。是否真正正确我也没有把握。

如果有什么错误,请大神们给予指正

 

===========================================

(一)、增加、删除、修改操作,都可以直接调用dbset<>集合的Add()、AddRange()、Remove()、AddOrUpdate()  几个方法、然后调用DbContext.SaveChange()实例对象方法,实现增删改。

数据上下文baglEntities 中有一个actionlist的dbset集合

public partial class baglEntities : DbContext
    {
        public baglEntities()
            : base("name=baglEntities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<actionlist> actionlist { get; set; }
}
public void test()
{
  
baglEntities bg=new baglEntities();

}

 

1、增加:bg.actionlist.Add(actionlist类型的对象);   bg.SaveChange();

2、删除:bg.actionlist.Remove(从actionlist集合中查找到的对象); bg.SaveChange();

3、修改:bg.actionlist.AddOrUpdate(从actionlist集合中拿到的对象);bg.SaveChange();

 

=================================================================

教程上是这样说的,可是很多时候,我们找不到AddOrUpdate()方法?

(二)、利用状态跟踪实现增删改(EF中增删改的表层原理)

    DbContext中有一个方法Entry(实体对象),这个方法要求传入一个实体对象,这个方法的返回值有一个state属性。bg.Entry(actionlist实体对象).state   

  这个state属性是一个EntityState枚举,该枚举包含5个值:Added、deleted、UNchanged、Modifield、Detached。  顾名思义,这个枚举用来标注实体对象的状态。

    EntityState枚举这五个值的含义书面解释比较绕口,我用常用说法来解释下:

    (1)Added:把指定对象的状态标注为增加。

    (2)deleted:把指定对象的状态标注为删除。

    (3)Modifield:把指定对象的状态标注为修改。

    (4)UNchanged:把指定对象的状态标注为未改变(也就是这个实体对象从数据库中刚刚拿到,没有做任何改变)

    (5)Detached:没有与dbset集合挂钩的对象的状态。

  通过操作状态,给state属性赋状态,再调用SaveChange();方法,EF就能够自动的对对象进行增删改操作。

  实际上,EF的ADD  REMOVE  其实就是通过操作状态,之后根据实体对象的状态进行SQL的组装。假如给一个实体对象状态设置成Added。EF检测到这个对象状态为Added就会根据这个对象制作Insert 命令发往数据库。最终完成插入数据。

 

转载于:https://www.cnblogs.com/bibibibi/p/6431403.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值