Entity Framework(三)---FluentAPI和增删查改
2024-09-27 12:09:59
一、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,不然会报错
最新文章
- Android keycode列表
- js中的文本编辑器控件KindEditor---那些打酱油的日子
- WeX5学习笔记
- css3知识
- Linux下不同服务器间数据传输--转载
- ACM/ICPC 之 Bellman Ford练习题(ZOJ1791(POJ1613))
- iOS开发 cocoapods的安装以及使用
- 使用JS对form的内容验证失败后阻止提交 &;&;js校验表单后提交表单的三种方法总结
- 谈谈 React.js 的核心入门知识
- 使用C++名单在文档处理和学生成绩管理系统相结合
- Mac下安装cscope和ctags
- 让xcode8支持7.0的设备
- 对ajax回调函数的研究
- python实现博客自动刷点击脚本
- 性能测试四十八:Jenkins+Ant+Jmeter系统部署
- java基础语法2.
- CentOS 7.0关闭默认防火墙启用iptables防火墙
- Android设备管理器漏洞(转)
- awk 提取数字
- Windoows窗口程序七
热门文章
- python对表格的使用
- tensorflow pb ckpt pbtxt
- Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
- 协议:Http Https TCP/IP
- Spring整合JUnit spring静态对象属性的注入
- iso十款常用类库
- RPC框架基础概念理解以及使用初体验
- Apache+Tomcat+jk windows环境下的集群部署
- Java OOP——第五章 异常
- Python中的文件和目录操作实现