Entity Framework 基础操作(1)
EF是微软推出的官方ORM框架,默认防注入可以配合LINQ一起使用,更方便开发人员。
首先通过SQLSERVER现在有的数据库类生产EF
右键-》添加-》新建项,选择AOD.NET实体数据模型,来自数据库的Code FIrst
完成添加后会生成多个文件,并且在你的项目的配置文件中有数据库的链接字符串,下面文件中 “name=Test”,
Test就是连接字符串的name
public partial class TestDB : DbContext
{
public TestDB()
: base("name=Test")
{
}
public virtual DbSet<School> School { get; set; }
public virtual DbSet<Student> Student { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
public partial class School
{
[StringLength()]
public string SchoolId { get; set; } [StringLength()]
public string Name { get; set; } public DateTime? CreateTime { get; set; } [StringLength()]
public string Address { get; set; } [StringLength()]
public string Telephone { get; set; }
}
public partial class Student
{
[StringLength()]
public string StudentId { get; set; } [StringLength()]
public string Name { get; set; }
}
School和Student就是根据数据库表来生成的类 通过泛型来做基础操作
class BaseDB<T> where T : class, new()
{
DbContext Db = new Test(); //查询
public IQueryable<T> LaodEntities(System.Linq.Expressions.Expression<Func<T, bool>> whereLambda)
{
return Db.Set<T>().Where<T>(whereLambda);
} //更新
public bool EditEntity(T entity)
{
Db.Entry<T>(entity).State = EntityState.Modified;
return Db.SaveChanges() > ;
} //添加
public bool AddEntity(T entity)
{ Db.Set<T>().Add(entity);
return Db.SaveChanges() > ;
} //删除
public bool DeleteEntity(T entity)
{
Db.Entry<T>(entity).State = EntityState.Deleted;
return Db.SaveChanges() > ;
}
//批量添加
public bool AddBatch(IList<T> arrObj)
{
Db.Set<T>().AddRange(arrObj);
return Db.SaveChanges() > ;
}
//批量更改
public bool UpdateBatch(IList<T> arrObj)
{
foreach (var item in arrObj)
{
Db.Entry<T>(item).State = EntityState.Modified;
}
return Db.SaveChanges() > ;
}
//批量删除
public bool DeleteBatch(IList<T> arrObj)
{
foreach (var item in arrObj)
{
Db.Entry<T>(item).State = EntityState.Deleted;
}
return Db.SaveChanges() > ;
}
//分页
public IQueryable<T> LoadPageEntities<s>(int pageIndex, int pageSize, out int totalCount, System.Linq.Expressions.Expression<Func<T, bool>> whereLambda, System.Linq.Expressions.Expression<Func<T, s>> orderbyLambda, bool isAsc)
{
var temp = Db.Set<T>().Where<T>(whereLambda);
totalCount = temp.Count();
if (isAsc)//升序
{
temp = temp.OrderBy<T, s>(orderbyLambda).Skip<T>((pageIndex - ) * pageSize).Take<T>(pageSize);
}
else
{
temp = temp.OrderByDescending<T, s>(orderbyLambda).Skip<T>((pageIndex - ) * pageSize).Take<T>(pageSize);
}
return temp;
}
}
实际使用
BaseDB<Student> baseDB = new BaseDB<Student>();
baseDB.AddEntity(new Student {
StudentId = Guid.NewGuid().ToString(),
Name = "小红"
});
Entity Framework 基础操作(1)的更多相关文章
- entity framework 时间操作
).FirstOrDefault(); if (useractiveentity == null) { UserActive userActive = new UserActive(); userAc ...
- Entity Framework 基础
在忙碌中渡过了5,6,7 月份,现在些抽点时间对Entity Framework的使用做一些基础的回忆. Entity Framework 是什么? Entity Framework(EF)和我们所熟 ...
- .NET Entity Framework入门操作
Entity Framework是微软借鉴ORM思想开发自己的一个ORM框架. ORM就是将数据库表与实体对象(相当于三层中的Model类)相互映射的一种思想. 最大的优点就是非常方便的跨数据库平台. ...
- Entity Framework基础01
学习了ADO.NET的相关知识,掌握了它对数据库表的基本操作,但是实际在开发项目应用中微软为我们开发ef这个ORM,使用它可以很方便的利用ADO.NET来操作DBMS,使得我们开发项目的着重点放在业务 ...
- UWP: 在 UWP 中使用 Entity Framework Core 操作 SQLite 数据库
在应用中使用 SQLite 数据库来存储数据是相当常见的.在 UWP 平台中要使用 SQLite,一般会使用 SQLite for Universal Windows Platform 和 SQLit ...
- ADO.NET 之 Entity Framework 基础
Entity Framework(EF)是使用直接映射到应用程序中业务对象的对象模型于关系数据库进行交互.它没有将数据视为行和列的集合,而是将其视为强类型对象(成为实体)的集合. 术语:LinQ to ...
- Entity Framework底层操作封装V2版本号(2)
这个类是真正的数据库操作类.上面的那个类仅仅是调用了这个封装类的方法进行的操作 using System; using System.Collections.Generic; using System ...
- Entity Framework底层操作封装V2版本号(1)
由于同志们一直给我提建议说.曾经发的版本号有问题.所以经过了我这一年多的使用和扩展,如今方法基本稳定了. 如今贴出来给大家使用: 首先上场的是数据库操作层: using System; using S ...
- Entity Framework 基础知识走马观花
本文目录: 一.EF中的edmx文件探秘 二.EF中的代理模式探秘 三.EF中的延迟加载与即时加载 一.EF中的edmx文件 1.1 emdx文件本质:一个XML文件 (1)通过选择以XML方式打开e ...
随机推荐
- Java连载55-接口的作用、接口举例
一.接口的作用 1.可以使项目分层,所有层都面向接口开发,开发效率提高了. 2.接口使代码和代码之间的耦合度降低,就像内存条和主板的关系,变得“可插拔”,可以随意切换. 总结:接口和抽象类能够完成某 ...
- 一篇文章看懂angularjs component组件
壹 ❀ 引 我在 angularjs 一篇文章看懂自定义指令directive 一文中详细介绍了directive基本用法与完整属性介绍.directive是个很神奇的存在,你可以不设置templa ...
- 【Linux命令】磁盘分区,格式化,挂载命令,创建交换分区(fdisk,mkfs,mount,umount)
友情链接 磁盘分区,格式化,挂载,创建交换分区:https://www.cnblogs.com/HeiDi-BoKe/p/11936998.html RAID工作级别:https://www.cnbl ...
- git commit vim报错
window平台,使用git bash,填写git commit时,退出时vim报错: 错误信息 启动失败 Vim: Caught deadly signal SEGV 在工程目录下,进.git目录, ...
- 基于 Swoole 的微信扫码登录
随着微信的普及,扫码登录方式越来越被现在的应用所使用.它因为不用去记住密码,只要有微信号即可方便快捷登录.微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实 ...
- 移动端触发touchend后阻止click事件
// vue里面简单的处理方式,可以同时兼容PC和移动端 <div @touchend.stop.prevent="doSomething" @click.stop.prev ...
- 【nodejs原理&源码赏析(6)】深度剖析cluster模块源码与node.js多进程(下)
目录 一. 引言 二.server.listen方法 三.cluster._getServer( )方法 四.跨进程通讯工具方法Utils 五.act:queryServer消息 六.轮询调度Roun ...
- 结对编程项目复盘:带UI的小初高数学学习软件
实现个人项目时,由于我当时的Java GUI编程基础还比较薄弱,所以我选择通过命令行实现,并将编程开发的重点放到了算法效率上去.没能设计出用户体验更佳的UI成为了我在个人项目阶段最大的遗憾. 在这次结 ...
- 「SAP技术」已启用质检物料创建PO时候'STOCK TYPE'没有默认为X?
「SAP技术」 SAP MM 已启用质检物料创建PO时候'STOCK TYPE'没有默认为X? Part I:SAP 标准行为 1, 物料11002335, QM视图里 01 inspection t ...
- 利用Azure虚拟机安装Dynamics 365 Customer Engagement之八:安装报表扩展及最新更新
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...