当前位置: 移动技术网 > IT编程>开发语言>c# > C#基于DBContext(EF)实现通用增删改查的REST方法实例

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

2019年07月18日  | 移动技术网IT编程  | 我要评论
本文实例讲述了c#基于dbcontext(ef)实现通用增删改查的rest方法,分享给大家供大家参考。具体如下: 我们用ado.net entity data model

本文实例讲述了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#程序设计有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网