zoukankan      html  css  js  c++  java
  • Entity Framework(三)---FluentAPI和增删查改

    一、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 ==3).SingleOrDefault();
    
                    if(ps==null)
                    {
                        Console.WriteLine("没有ID为3的人");
                    }
                    else
                    {
                        ctx.Persons.Remove(ps); //单个删除
                    }
                 }
                   var ps= ctx.Persons.Where(p => p.Id >3);
    
                    ctx.Persons.RemoveRange(ps); //批量删除

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

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

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

  • 相关阅读:
    计算几何——直线交点poj1269
    计算几何——线段和直线判交点poj3304
    mysql优化
    MyBatis的返回参数类型和查询结果遍历
    Java中HashMap遍历的两种方式
    Java 常用排序算法/程序员必须掌握的 8大排序算法
    手动挡车该如何磨合
    手动挡你会开吗 八招教你开好手动挡车型
    开手动挡车10大技巧 老司机也不一定全知道!
    手动挡汽车操作必须知道的9大误区
  • 原文地址:https://www.cnblogs.com/fuyouchen/p/9385753.html
Copyright © 2011-2022 走看看