EF6基本使用总结

  • Post author:
  • Post category:其他


JAVA开发的人员对面相对象应该非常熟悉,C#也一样,为什么今天讲EF我要先说JAVA呢?因为C#同JAVA一样,都是面相对象的开发语言,因为JAVA较早,并且JAVA开源,所以JAVA当中的框架较多,所以我们拿JAVA来举例子,在JAVA当中,为了实现数据的面相对象开发,出现了间接实现方式ORM,ORM就是对象关系映射,这方面的框架有很多,比如hibernate,mybatis,openipa等很多成熟的框架,那么在C#当中是不是也存在这样一个框架呢?答案是肯定的那就是ENTITY FRAMEWORK,这个框架实现了在C#中通过ORM的方式来对对象进行相应的增,删,改,查。

一般ORM架构无非是面向对象方式进行增,删,改,查,以及原始的复杂SQL执行,EF这两种方式都满足,下面我们就来详细说一下这两种编程方式。这两种方式都需要DBContext类,第一种很简单,稍后看代码就可以。我们主要说说第二种。

原始SQL执行主要需要两个类:

1.Database.SqlQuery

2.Database.ExecuteSqlCommand

这两个类,上面的主要是执行查询语句,下面的执行DDL和DML,是不是很清楚,接下来通过一些代码会理解起来更直观。

using Oracle.DataAccess.Client;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Objects;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EFDemo
{
    class Program
    {
        public static void Main(string[] args)
        {
            EFDemoContext _context = new EFDemoContext();
            T_BD_ORGUSER _user = new T_BD_ORGUSER();
            //新增
            _user.FUSERID = 101001;
            _user.FUSERNAME = "地主老财";
            _user.FAGE = 20;
            _context.T_BD_ORGUSER.Add(_user);
            _context.SaveChanges();
            //修改
            _user = _context.T_BD_ORGUSER.Where(s => s.FUSERID == 123456).First<T_BD_ORGUSER>();
            _user.FAGE = 30;
            _context.Entry<T_BD_ORGUSER>(_user).State = System.Data.EntityState.Modified;
            _context.SaveChanges();
            //删除
            _user = _context.T_BD_ORGUSER.Where(s => s.FUSERID == 123456).First<T_BD_ORGUSER>();
            _context.Entry<T_BD_ORGUSER>(_user).State = System.Data.EntityState.Deleted;
            _context.SaveChanges();
            //使用原始SQL语句查询
            _user = _context.T_BD_ORGUSER.SqlQuery("select * from t_bd_orguser t where t.fuserid=123456").First<T_BD_ORGUSER>();
            List<T_BD_ORGUSER> _lis_obj = new List<T_BD_ORGUSER>();
            _lis_obj=_context.Database.SqlQuery<T_BD_ORGUSER>("select * from t_bd_orguser t where t.fuserid=123456").ToList<T_BD_ORGUSER>();
            foreach (T_BD_ORGUSER aaa in _lis_obj)
            {
                System.Console.WriteLine(aaa.FUSERNAME);
            }
            //使用原始SQL语句执行更新
            StringBuilder sql_obj = new StringBuilder();
            sql_obj.AppendFormat("update t_bd_orguser t set t.fage=36 where t.fuserid={0}",123456);
            var aa = _context.Database.ExecuteSqlCommand(sql_obj.ToString());
            System.Console.WriteLine(aa);
        }
    }
}

通过以上例子是不是一看就懂,这些都是比较浅的,如果想要网深入一点,那你就需要继续深入研究一下代码,后续会继续更新相应的讲解,如有疑问请留言。

每天更新一点新知识,知识不是瞬间学会的,而是日积月累形成的,短期学会的是知道,长期积累的是知识。



版权声明:本文为u013560667原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。