用DBContext (EF) 实现通用增删改查的REST方法
我们用ADO.NET Entity Data Model来生成实体类后,一般都会对这些类进行基本的增删改查操作,如果每个类都要写这些基本的方法,实在太乏味了。下面就是通过step by step的方式介绍如何用DBContext来实现通用增删改查的REST方法,以及实现过程中容易出现的问题。
1. 打开vs2012,新建一个class library的项目
2. 新加一个ADO.NET Entity Data Model项到这个项目
3. 打开App.Config, 修改res://* 为res://yourproject
否则会报下面的这咱错误:
WIFI.ssdl(3,4) : error 0019: Each type name in a schema must be unique. Type name 'WifiModel.Store.AD' was already defined.
4. Build这个项目
5. 新建另一个web api的项目
ASP.NET MVC 4 Web Application –> Web API 模板
注意这个项目的EF的版本与上个项目的版本要一致
6. 添加一个类到Models下:
public class GenericDBContext<T> : WifiEntities where T : class
{
public DbSet<T> Items { get; set; }
public List<T> Get()
{
return Set<T>().ToList();
} public T Get(int id)
{
return Items.Find(id);
} public void Put(T item)
{
Items.Attach(item);
Entry(item).State = EntityState.Modified;
SaveChanges();
} public void Post(T item)
{
Items.Add(item);
SaveChanges();
} public void Delete(int id)
{
Delete(Get(id));
} public void Delete(T item)
{
Items.Attach(item);
Entry(item).State = EntityState.Deleted;
SaveChanges();
}
}
7. 添加一个到Controllers下面:
public class GenericController<T> : ApiController where T : class
{
private readonly GenericDBContext<T> _context = new GenericDBContext<T>(); public List<T> Get()
{
return _context.Get();
} public T Get(int id)
{
return _context.Get(id);
} public void Post([FromBody]T t)
{
_context.Post(t);
} public void Put([FromBody]T t)
{
_context.Put(t);
} public void Delete(int id)
{
_context.Delete(id);
}
}
至此,通用方法写完了
8. 下面就可以写具体Controller了
public class ADController : GenericController<AD>
{
}
…
9. 最后用soap ui 进行调试,通过
用DBContext (EF) 实现通用增删改查的REST方法的更多相关文章
- Entity - 使用EF框架进行增删改查 - 模型先行
模型先行:先创建数据库实体模型,然后再进行数据库的增删改查. 基本步骤是不变的,可参照 <Entity - 使用EF框架进行增删改查 - 数据库先行> 其中的不同是,在创建数据库实体模型的 ...
- Python笔记·第五章—— 列表(List) 的增删改查及其他方法
一.列表的简介 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...
- 列表(List) 的增删改查及其他方法
一.列表的简介 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[ ]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:li = ...
- EF学习笔记——通用增删改查方案
http://blog.csdn.net/leftfist/article/details/25005307 我刚接触EF未久,还不知道它有什么强大之处,但看上去,EF提供了一般的增删改查功能.以往用 ...
- hibernate实现增删改查的各种方法
1>接口(主要是增删改查的接口)BaseDao.java /** * * @author fly.zhou */ public interface IBaseDao { //增加对应实体的一条记 ...
- linux的sed(增删改查)使用方法
sed的增删改查的基本操作 参考:https://www.cnblogs.com/0zcl/p/6855740.html 01:增(a) 2个sed命令,分别是:(这些操作都是在内存中进行的,所以不会 ...
- C# 数据操作系列 - 8. EF Core的增删改查
0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置. 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法. 1 ...
- 关于EF 通用增删改查的封装
1. Entity Framework是Microsoft的ORM框架,随着 Entity Framework 不断的完善强化已经到达了EF 6.0+ 还是非常的完善的,目前使用的比例相对于其他OR ...
- Entity - 使用EF框架进行增删改查 - 数据库先行
数据库先行:先创建数据库,然后进行增删查该操作. 要操作的表结构(表名:Tb_Category): 创建一个控制台程序: 添加一个ADO.NET实体数据模型: 1.对控制台程序右键 2.选择ADO.N ...
随机推荐
- el取bean 对象属性规则
1,去map 根据map key 2,取bean中属性 根据get方法,getaaa() getAaa() ${xxx.aaa}可以取到此方法. ${xxx.Aaa}报错
- GATT服务搜索流程(一)
GATT的规范阅读起来还是比较简答, 但是这样的规范在代码上是如何实现的呢?下面就分析一下bluedroid 协议栈关于GATT的代码流程. BLE的设备都是在SMP之后进行ATT的流程的交互.从代码 ...
- 事务,acid,cap,paxos随笔
事务ACID四个特性: A:原子性(Atomicity)C:一致性(Consistency)I:隔离性(Isolation)D:持久性(Durability) 原子性:语句要么全执行,要么全不执行,是 ...
- BodeAbp服务端介绍
BodeAbp服务端只提供api,绝大部分api通过abp的动态WebApi机制提供,原理可以参考这篇文章:http://www.cnblogs.com/1zhk/p/5418694.html 与业务 ...
- 从零开始搭建属于你的React/redux/webpack脚手架
大家好,我是苏南,今天要给大家分享的是<<我的react入门到放弃之路>>,当然,也不是真的放弃啦--哈哈,这篇博客原本是从17年初写的,一直没有在csdn发布,希望今天不会太 ...
- JSON.NET VS BinaryFormatter 性能
近期有个性能调优工作.通过dottrace 分析,发现几处问题,其中json.net 在序列化和反序列化的时候也比较耗性能,所以考虑能不能通过其它序列化方式来提高性能. 1 object 序列化代码 ...
- Map获取key值
有两种方法 public static void test4(){ Map<String, Object> map = new HashMap<>(); map.put(&qu ...
- 《Linux内核分析》期终总结&《Linux及安全》期中总结
<Linux内核分析>期终总结&<Linux及安全>期中总结 [李行之 原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc. ...
- 使用Spring提供的缓存抽象机制整合EHCache为项目提供二级缓存
Spring自身并没有实现缓存解决方案,但是对缓存管理功能提供了声明式的支持,能够与多种流行的缓存实现进行集成. Spring Cache是作用在方法上的(不能理解为只注解在方法上),其核心思想是 ...
- K Nearest Neighbor 算法
文章出处:http://coolshell.cn/articles/8052.html K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KN ...