C#基于DBContext(EF)实现通用增删改查的REST方法实例

 更新时间:2014年10月16日 09:23:02   投稿:shichen2014  
这篇文章主要介绍了C#基于DBContext(EF)实现通用增删改查的REST方法实例,是C#程序设计中非常实用的技巧,需要的朋友可以参考下

本文实例讲述了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#中的HttpWebRequest类用法详解

    C#中的HttpWebRequest类用法详解

    本文详细讲解了C#中的HttpWebRequest类的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • C#组件FormDragger窗体拖拽器详解

    C#组件FormDragger窗体拖拽器详解

    这篇文章主要为大家详细介绍了C#组件FormDragger窗体拖拽器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • C#中#define后面只加一个参数的解释

    C#中#define后面只加一个参数的解释

    今天小编就为大家分享一篇关于C#中#define后面只加一个参数的解释,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • AnyChat的视频会议程序实例详解

    AnyChat的视频会议程序实例详解

    AnyChat是一款跨平台的音视频解决方案。通过本篇文章给大家介绍AnyChat的视频会议程序,涉及到anychat相关知识,对anychat视频会议相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • C#实现在listview中插入图片实例代码

    C#实现在listview中插入图片实例代码

    这篇文章主要介绍了C#实现在listview中插入图片实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • C# HttpClient超时重试机制详解

    C# HttpClient超时重试机制详解

    超时重试的实现方式可以使用循环结构,在请求发起后等待一定时间,若超时未收到响应,则再次发起请求,循环次数可以根据实际情况进行设置,一般建议不超过三次,这篇文章主要介绍了C# HttpClient超时重试,需要的朋友可以参考下
    2023-06-06
  • c#线程Thread示例

    c#线程Thread示例

    这篇文章主要介绍了c#线程Thread示例,需要的朋友可以参考下
    2014-05-05
  • 在C#中 webbrowser的使用心得

    在C#中 webbrowser的使用心得

    最近用webbrowser做了个东西,期间有点小曲折,而且网上的解决方法也基本都是浅尝辄止,特此在这里发一下同大家分享。

    2013-04-04
  • c# WPF实现Windows资源管理器(附源码)

    c# WPF实现Windows资源管理器(附源码)

    这篇文章主要介绍了c# WPF实现Windows资源管理器的示例(附源码),帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-03-03
  • 使用C#实现RTP数据包传输 参照RFC3550

    使用C#实现RTP数据包传输 参照RFC3550

    本篇文章小编为大家介绍,使用C#实现RTP数据包传输 参照RFC3550,需要的朋友参考下
    2013-04-04

最新评论