Entity Framework基础

概述

       Entity Framework简称EF,是微软ORM思想具体实现的另一个产品。本篇博客将简单的介绍它,至于它的具体深层次的使用,大家可以查询相应的操作手册,该篇仅仅是入门。


Entity Framework和Linq to Sql的关系

       大家都知道Linq to Sql是微软ORM思想的一个具体产品,Entity Framework也是它的一个具体产品,那么,这两个产品有什么区别呢?

       Linq to Sql是ORM思想实现的一个轻量级的框架,Entity Framework是一个重量级框架;

       Linq to Sql和Entity Framework的一个重要的区别就是,Linq to Sql只能针对于SQL Server数据库,而Entity Framework可以针对于很多的数据库(Oracle,SQL Server等),也就是说Entity Framework是跨数据库的,不要小看这一点,在实际的开发中,非常的牛叉,下面我们举例说明。

       我们使用经典三层构建一个项目,我们需要写自己的D层,如果此时我们换了数据库,那么,我们需要重写D层。如果我们在创建这个项目的时候,使用了Linq to Sql,那么我们的D层创建的非常的简单,但是,当我们换数据库的时候,Linq to Sql框架就不管用了;如果我们在创建这个项目的时候,使用了Entity Framework框架,那么,我们只需要改一个配置文件就可以了,不需要修改程序中的代码。


为什么使用Linq to Sql或Entity Franework

       回答这个问题,我们就要说一说D层存在的问题了。

       我们写D层的时候,我们通常会抽象出来一个SQLHelper类,这个类实现了对数据库的增删查改,然后,我们再创建相应的D层类,这些D层类里面的方法的功能,其实都一样,唯一不同的就是SQL,从这里我们可以看到,我们的D层的问题,那就是,我们重复性的书写一些不必要的类或者方法,解决这个方法就需要慢慢的抽象,抽象出共有的东西,像:DataTable装换为实体集,操作数据库的几类方法(注意其参数),然后将其一整合,这个大致就是我们所属的ORM思想实现的雏形了,当然,上面所说的那些东西,Linq to Sql或Entity Framework这些框架已经帮助我们实现了,我们只需要使用它们提供的方法就行了,从这里我们也可以看到,如果我们使用这些框架,我们程序员在编程的时候,几乎不需要管理D层的东西,只需要关注业务的实现就可以了。


Entity Framework的实例

SQL脚本

CREATE DATABASE DBFirst
GO
USE DBFirst
GO

CREATE TABLE T_Customer
(
	ID INT PRIMARY KEY IDENTITY(1,1),
	CusName VARCHAR(20) NOT NULL
)
CREATE TABLE T_Order
(
	ID INT PRIMARY KEY IDENTITY(1,1),
	CustomerID INT FOREIGN KEY REFERENCES T_Customer(ID),
	DepName VARCHAR(20) NOT NULL
)

程序代码





using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace EF.EntityFrameworkDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 添加实体
            创建上下文对象
            //DBFirstEntities dbFirst = new DBFirstEntities();
            操作实体            
            //T_Customer customer = new T_Customer();
            //customer.CusName = "新添用户";
            附加在上下文
            //dbFirst.T_Customer.AddObject(customer);
            保存
            //dbFirst.SaveChanges();
            #endregion

            #region 删除实体
            1、创建上下文对象
            //DBFirstEntities dbFirst = new DBFirstEntities();
            2、创建实体
            //T_Customer customer = new T_Customer();
            //customer.ID = 9;
            3、将实体附加到上下文里面来进行管理
            //dbFirst.T_Customer.Attach(customer);
            修改实体的状态
            //dbFirst.ObjectStateManager.ChangeObjectState(customer, EntityState.Deleted);
            4、上下文操作数据库
            //dbFirst.SaveChanges();
            #endregion

            #region 修改实体
            1、创建访问数据库的上下文对象
            //DBFirstEntities dbFirst = new DBFirstEntities();
            2、修改对象
            //T_Customer customer = new T_Customer();
            //customer.ID = 4;
            //customer.CusName = "用户4_修改后2";
            3、附加到数据库
            //dbFirst.T_Customer.AddObject(customer);
            修改对象状态
            //dbFirst.ObjectStateManager.ChangeObjectState(customer, EntityState.Modified);
            4、上下文更新数据库
            //dbFirst.SaveChanges();
            #endregion

            #region 查询
            DBFirstEntities dbFirst = new DBFirstEntities();

            foreach (var item in dbFirst.T_Customer)
            {
                Console.WriteLine(string.Format("ID:{0}  Name:{1}",item.ID,item.CusName));
            }
            #region linq表达式
            T_Customer cs = (from customer in dbFirst.T_Customer where customer.ID == 2 select customer).SingleOrDefault();
            Console.WriteLine("ID:{0}  Name:{1}",cs.ID,cs.CusName);
            #endregion

            #endregion

            Console.ReadKey();
        }
    }
}

总结

       EF的使用大致可以分为:DBFirst(数据库为中心)和ModelFirst(实体为中心),上面是DBFirst模型,至于ModelFirst,大家可以搜一下。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值