zoukankan      html  css  js  c++  java
  • Entity Framework学习(二)基本操作

    我们一般对数据主要有增删查以及更新这几中基本操作形式,本文就以前面的文章中的代码为例,简单的介绍一下在Entity Framework中基本操作的使用方法。

    查询

    1. 通过linq语句查询

        var query = from b in db.Blogs
                    where b.BlogId == 1 && b.Name == "my blog"
                    select b;

        var blog = query.FirstOrDefault();

    这种方式的好处是可以类似Sql语句一样使用非常复杂的查询条件,对于复杂的查询来说非常给力。

    2. 使用Find函数通过主键查询

        var blog = db.Blogs.Find(1);

    这种方式类似于字典式的查询,通过主键查询到数据;是我们使用过程中用得最多的一种方式。在使用Find查询时,如果指定的主键无法查询到结果,则返回null,不会抛异常。

     

    添加:

        db.Blogs.Add(new Blog() { BlogId = 2, Name = "test2" });
        db.SaveChanges();

    添加操作和我们操作集合是一样的,不过这里需要调用一下SaveChanges函数将变更保持到数据库。

     

    更新:

        var blog = db.Blogs.Find(1);
        blog.Name = "test1";
        db.SaveChanges();

    更新分为三步:查询数据、修改数据、保存结果;还是比较简单的。

     

    删除:

        var blog = db.Blogs.Find(1);
        db.Blogs.Remove(blog);
        db.SaveChanges();

    删除也是分为三步:查询数据、删除数据、保存结果。需要注意的是,如果在Remove中传入null函数,则会抛异常。

     

    批量删除和批量更新:

    批量删除和批量更新在我们常规的集合操作中基本上用不到,但在Sql操作中却是一个非常常见的操作。从理论上来讲我们可以通过Lambda表达式非常优雅的实现这一操作,但EntityFramework却不支持,只能通过执行sql语句来删除。这也是EntityFramework的一个一直被人诟病的地方。

    不过得益于C#灵活而强大的语法,已经有人通过扩展函数来实现这一功能,感兴趣的可以看下老赵的使用Lambda Expression批量删除数据这篇文章,我这里就不多讲了。

     

  • 相关阅读:
    caffe报错:cudnn.hpp:86] Check failed: status == CUDNN_STATUS_SUCCESS (3 vs. 0) CUDNN_STATUS_BAD_PARAM 原因
    linux C++生成uuid
    linux出现tmp空间满的情况解决
    darknet集成遇到的问题以及解决方法
    机器学习实战-决策树
    机器学习实战-KNN
    Linux学习(二)
    Linux学习(一)
    shell编程(二)
    shell编程(一)
  • 原文地址:https://www.cnblogs.com/TianFang/p/3013038.html
Copyright © 2011-2022 走看看