C#基于DBContext(EF)实现通用增删改查的REST方法实例
作者:shichen2014 发布时间:2021-06-23 20:56:07
本文实例讲述了C#基于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 进行调试,通过
希望本文所述对大家的C#程序设计有所帮助。


猜你喜欢
- 概念:有enum关键字修饰的类,成为枚举类1、枚举规则枚举类的对象可以有类里面定义,不支持重新new出来,枚举类有构造函数,其他的类都一样,
- JavaWeb 使用DBUtils实现增删改查1、创建C3p0Utils类创建cn.itcast.jdbc.utils包代码如下:packa
- 为什么需要ThreadLocalRandomjava.util.Random一直都是使用比较广泛的随机数生成工具类,而且java.lang.
- 本文实例为大家分享了Android自定义广播接收的具体代码,供大家参考,具体内容如下实现效果:MainActivity.java代码:pac
- 1.加入jackson的jar包2.在响应的方法上加上@ResponseBody:把java对象转化为json对象3.方法的返回值可以是对象
- 默认3条以上转为彩信改为5条路径vendor/mediatek/proprietary/packages/apps/Mms/src/com/
- package com.yswc.dao.sign;import java.io.BufferedReader;import java.io
- 本文实例讲述了java实现递归文件列表的方法。分享给大家供大家参考。具体如下:FileListing.java如下:import java.
- 本文实例讲述了Android编程实现仿QQ发表说说,上传照片及弹出框效果。分享给大家供大家参考,具体如下:代码很简单,主要就是几个动画而已,
- 本文实例为大家分享了Android实现背景图片轮播的具体代码,供大家参考,具体内容如下点击按钮实现图片轮播效果实践案例:xml<?xm
- hystrixDashboard服务监控除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboar
- #line #line 使您可以修改编译器的行号以及(可选)错误和警告的文件名输出。下面的示例说明如何报告与行号关联的两个警告。#line
- 本文实例为大家分享了Java实现五子棋网络版的具体代码,供大家参考,具体内容如下需求分析:对于网络五子棋而言,在普通五子棋的基础上需要添加以
- 本文为大家分享了Android Toast全屏显示的具体代码,供大家参考,具体内容如下废话不说,直接上代码:private void toa
- 本文实例讲述了C#定时关闭窗体的方法,分享给大家供大家参考。具体方法如下:public partial class Form2 : Form
- 一、代码结构:二、数据实体类:using System;using System.Collections.Generic;using Sys
- 这篇文章主要介绍了springmvc视图解析流程代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 由于毕业后工作没有对接到专业问题,导致四五年没有碰过Winform程序了。突然由于工作问题,为了方便自己,所以想自己写写小winform小软
- 实现目标通过C#实现电脑的注销、关机、重启功能知识点本案例涉及的知识点包含:Process、Shell32.dll、User32.dll、S
- Spring整合mybatis注解扫描是否成功IDEA spring整合mybatis会使用注解扫描的配置<context:compo