EntityFramework(三)FluentAPI和增删查改

coding

一、FluentAPI:

       1、基本配置:   

namespace ConsoleApp14.ModelConfig

{

publicclass PersonConfig: EntityTypeConfiguration<Person>

{

//继承自EntityTypeConfiguration,并将Person传进来

public PersonConfig()

{

this.ToTable("T_Persons");

}

}

}

publicclass TestDbContext:DbContext

{

public TestDbContext():base("name=connstr")//name=connstr 表示使用连接字符串中名字为connstr的数据库

{

}

public DbSet<Person> Persons { get; set; }

protectedoverridevoid 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,不然会报错

以上是 EntityFramework(三)FluentAPI和增删查改 的全部内容, 来源链接: utcz.com/z/509939.html

回到顶部