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#程序设计有所帮助。

标签:C#
0
投稿

猜你喜欢

  • 解决Spring在Thread中注入Bean无效的问题

    2022-06-26 13:03:59
  • SpringBoot自动配置原理详解

    2023-08-19 09:25:55
  • Flutter利用Hero组件实现自定义路径效果的动画

    2023-06-25 13:46:29
  • JDBC实现学生管理系统

    2023-01-22 13:22:19
  • MyBatis3源码解析之如何获取数据源详解

    2023-12-06 02:23:08
  • 浅谈Java之Map 按值排序 (Map sort by value)

    2021-06-20 01:23:10
  • Spring Utils工具类常用方法实例

    2023-05-01 05:37:37
  • spring整合redis缓存并以注解(@Cacheable、@CachePut、@CacheEvict)形式使用

    2022-04-25 01:46:14
  • java为何不能多继承的原因详解

    2023-10-12 04:45:00
  • Java实现分页代码

    2023-08-05 08:14:47
  • MyBatis超详细讲解如何实现分页功能

    2023-08-22 23:06:51
  • Java线程池高频面试题总结

    2023-10-22 02:12:34
  • Java请求转发和请求重定向区别详解

    2023-05-19 07:30:17
  • SpringBoot+netty-socketio实现服务器端消息推送

    2023-11-15 06:14:31
  • Spring Security前后分离校验token的实现方法

    2023-06-26 17:00:30
  • 详细聊聊SpringBoot中动态切换数据源的方法

    2023-11-24 04:07:49
  • Idea如何导入一个SpringBoot项目的方法(图文教程)

    2022-08-10 22:40:49
  • ReentrantLock源码详解--条件锁

    2023-01-01 15:36:22
  • IntellJ IDEA神器使用技巧(小结)

    2023-08-08 22:01:44
  • C#使用GET、POST请求获取结果

    2023-04-20 13:35:43
  • asp之家 软件编程 m.aspxhome.com