一、FluentAPI:

1、基本配置:

namespace ConsoleApp14.ModelConfig
{
public class PersonConfig: EntityTypeConfiguration<Person>
{
//继承自EntityTypeConfiguration,并将Person传进来
public PersonConfig()
{
this.ToTable("T_Persons");
}
}
}
   public class TestDbContext:DbContext
{
public TestDbContext():base("name=connstr")//name=connstr 表示使用连接字符串中名字为connstr的数据库
{ }
public DbSet<Person> Persons { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//用法一:从本程序集中加载所有继承自EntityTypeConfiguration类的配置
modelBuilder.Configurations.AddFromAssembly(
Assembly.GetExecutingAssembly());
//用法二: 从指定的程序集中加载所有的继承自EntityTypeConfiguration类的配置
// modelBuilder.Configurations.AddFromAssembly(
// Assembly.Load("ModelConfig")); //用法三:
// modelBuilder.Entity<Person>().ToTable("T_Person");
//用法四:
// modelBuilder.Configurations.Add(new PersonConfig());
} }

二、EF增删查改:

获取Dbset除了可以ctx.Persons之外,还可以ctx.Set<Person>()

1、增加:ctx.Persons.Add(p1) ;  ctx.SaveChange();

2、删除:先查询出要删除的数据,然后Remove。这种方式问题最少,虽然性能低,但是删除操作一般不频繁,不用考虑性能。

            using (TestDbContext ctx = new TestDbContext())
{
var ps= ctx.Persons.Where(p => p.Id ==).SingleOrDefault(); if(ps==null)
{
Console.WriteLine("没有ID为3的人");
}
else
{
ctx.Persons.Remove(ps); //单个删除
}
}
               var ps= ctx.Persons.Where(p => p.Id >);

                ctx.Persons.RemoveRange(ps); //批量删除

3、改:先查询出来,然后修改数据,最后SaveChange()

4、查询:因为Dbset实现了IQueryable 接口,而IQueryable 继承了IEnumerable接口,所以可以使用Linq、Lambda操作。

EF调用Skip之前必须调用OrderBy,不然会报错

Entity Framework(三)---FluentAPI和增删查改的更多相关文章

  1. Entity FrameWork 增删查改的本质

    之前的文章里面已经说了,EF的增删查改.那时候的修改,删除,只能是先查询出来要修改的数据,再修改,删除...现在来一个改进版的,增删查改. 1.Add static void Add() { //1. ...

  2. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

  3. MongoDB入门学习(三):MongoDB的增删查改

            对于我们这样的菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改.         由于M ...

  4. 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  5. 4.在MVC中使用仓储模式进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...

  6. 5.在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  7. EF各版本增删查改及执行Sql语句

    自从我开始使用Visual Studio 也已经经历了好几个版本了,而且这中间EF等框架的改变也算是比较多的.本篇文章记录下各个版本EF执行Sql语句和直接进行增删查改操作的区别,方便自己随时切换版本 ...

  8. 在MVC中使用泛型仓储模式和工作单元来进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...

  9. 在MVC中使用泛型仓储模式和依赖注入实现增删查改

    标签: 原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository ...

随机推荐

  1. 97: Address family not supported by protocol,nginx服务启动失败

    1.启动nginx服务报错 环境:centos 6.9,yum安装的nginx,启动报错 [root@lnmp ~]# nginx -tnginx: the configuration file /e ...

  2. 你视为意见领袖的大 V,可能只是个僵尸号

    今日导读 “高手在民间”这句话诚不欺我.互联网普及之后,民间大神在各大论坛如雨后春笋般涌现,忽而指点江山,笑谈国际风云,忽而算无遗策,狙击股市庄家,亦或退而求其次,美妆美食美颜,誓要带领少男少女冲在时 ...

  3. IOError: [Errno 22] invalid mode ('rb') or filename: 'C

    dataset = scipy.io.loadmat('F:\test_data.mat') 报错 IOError: [Errno ] invalid mode ('rb') or filename: ...

  4. Vuex基础-State

    官方地址:https://vuex.vuejs.org/zh/guide/state.html 由于 Vuex 的状态存储是响应式的,从 store 实例中读取状态最简单的方法就是在计算属性中返回某个 ...

  5. cutil.h问题

    CUDA5.0没有cutil.h头文件,貌似用helper_cuda.h文件代替,暂时没出问题.

  6. Layer弹出层关闭后刷新父页面

    API地址:http://layer.layui.com/api.html#end 调用END回调方法: end - 层销毁后触发的回调 类型:Function,默认:null 无论是确认还是取消,只 ...

  7. Java +安卓 定时任务

    1.android 自带闹钟定时任务 安卓闹钟可以配合广播来实现(不推荐),系统资源浪费,安卓系统在5.0以后的定时 任务貌似触发时间不准了,因为了为了省电. //获取系统闹钟 AlarmManage ...

  8. java基础必备单词讲解 day two

    variable 变量 count 统计 sum 总数 salary 薪水 Scanner 接收 import 导入 eclipse 日食 control 控制 shift 改变 alt 替换键 ha ...

  9. tcp服务端socket

    import socket if __name__ == '__main__': # 创建tcp服务端socket tcp_server_socket = socket.socket(socket.A ...

  10. VMware中Ubuntu开机时停在启动界面,不进入X-window的解决办法

    启动Ubuntu虚拟机时,停在这个画面不动: 试了若干次,都是这样.尝试了新建一个虚拟机然后把.vmdk文件拷过去启动,无法解决. 尝试重启,在这个界面按esc进入grub: 选择恢复模式 recov ...