一、实体框架(Entity FrameWork)简介
• 简称EF
• 与Asp.Net MVC关系与ADO.NET关系
• ADO.NET Entity FrameWork是微软以ADO.NET为基础所发展出来的对象关系对应(O/R Mapping)解决方法,早期被称为ObjectSpace,最新版本是EF6.0【CodeOnly功能得到了更好的支持】
• 实体框架Entity FrameWork 是ADO.NET中的一组支持开发面向数据的软件应用程序的技术。是微软的一个ORM框架。
二、什么是O/R Mapping
• 广义上:ORM指的是面向对象的对象模型和关系型数据库接口之间的相互转换。
• 狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。理想情况下,基于这样一个面向对象的接口,持久化一个OO对象应该不需要了解任何关系型数据库存储数据的实现细节。
EF简单演示
第一步:右击-->添加新项-->ADO.NET 实体数据模型
第二步:实体数据模型向导,默认即可
第三步:新建连接
第四步:勾上(是,在连接字符串中包含敏感数据),下一步
第五步:选择模型中包括那些数据库表,完成即可
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EFDemoFirst
{
class Program
{
static void Main(string[] args)
{
//添加一个添加操作
//1、声明一个EF的上下文
DEMOEntities dbContext = new DEMOEntities();
//2、声明一个实体
T_Seats seats = new T_Seats();
seats.userName = "test";
seats.pwdWord = "test1123";
//3、告诉EF做一个插入操作
dbContext.T_Seats.Add(seats);
//4、告诉上下文,把实体的变化保存到数据库里面去
dbContext.SaveChanges();
Console.Write("ok");
Console.ReadKey();
}
}
}
添加DEMO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EFDemoFirst
{
class Program
{
static void Main(string[] args)
{
//1、声明一个EF的上下文
DEMOEntities dbContext = new DEMOEntities();
//2、声明一个实体
T_Seats seats = new T_Seats();
seats.userName = "testTest";
seats.pwdWord = "123456 ";
seats.id = ;
//3、告诉EF做更新操作
//System.Data.Entity.EntityState.Added:添加
//System.Data.Entity.EntityState.Deleted:删除
//System.Data.Entity.EntityState.Modified:修改
dbContext.Entry<T_Seats>(seats).State = System.Data.Entity.EntityState.Modified;
//4、告诉上下文,把实体的变化保存到数据库里面去
dbContext.SaveChanges(); //执行SQL脚本的地方
Console.Write("ok");
Console.ReadKey();
}
}
}
修改DEMO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace EFDemoFirst
{
class Program
{
static void Main(string[] args)
{
//1、声明一个EF的上下文
DEMOEntities dbContext = new DEMOEntities();
////2、声明一个实体
T_Seats seats = new T_Seats();
seats.id = ; //删除的WHERE条件,不加全部删除
//3、告诉ef做更新操作
//system.data.entity.entitystate.added:添加
//system.data.entity.entitystate.deleted:删除
//system.data.entity.entitystate.modified:修改
dbContext.Entry<T_Seats>(seats).State = System.Data.Entity.EntityState.Deleted;
//4、告诉上下文,把实体的变化保存到数据库里面去
dbContext.SaveChanges(); //执行SQL脚本的地方
Console.Write("ok");
Console.ReadKey();
}
}
}
删除DEMO
static void Main(string[] args)
{
//查询
//1、声明一个EF的上下文
DEMOEntities dbContext = new DEMOEntities();
//把这个表中的数据,全部映射打印出来
//foreach (var item in dbContext.T_Seats)
//{
// Console.WriteLine(item.id+" "+item.userName+" "+item.pwdWord);
//}
#region Linq查询
var temp = from u in dbContext.T_Seats select u;
foreach (var t in temp)
{
Console.WriteLine(t.id+" "+t.userName+" "+t.pwdWord);
}
#endregion
Console.Write("ok");
Console.ReadKey();
}
查询DEMO
static void Main(string[] args)
{
DataModelContainer dbContext = new DataModelContainer();
var data = dbContext.CustomerSet.Where(u => u.ID > );
foreach (var item in data)
{
Console.WriteLine(item.ID+" ,"+item.CusName);
}
Console.WriteLine("ok..");
Console.ReadKey(); }
查询DEMO Lambda表达式
static void Main(string[] args)
{
DataModelContainer dbContext = new DataModelContainer();
//升序
//var pageData = dbContext.CustomerSet.Where(u => u.ID > 2).OrderBy<Customer, int>(u => u.ID);
//降序
var pageData = dbContext.CustomerSet.Where(u => u.ID > ).OrderByDescending<Customer, int>(u => u.ID).Skip(*).Take();
foreach (var item in pageData)
{
Console.WriteLine(item.ID+","+item.CusName);
}
Console.WriteLine("ok..");
Console.ReadKey();
}
分页