简介
Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架。相比于LINQ TO SQL,EF框架具有很明显的优势:
- EF框架支持多种数据库,而不仅仅局限于微软的SQL Server,MySQL,Oracle都有良好的支持。
- 支持存储过程。
- 强大的可视化模型设计工具,与Visual Studio深度整合。
- 与.NET平台的其他技术整合良好。
Entity Framework的架构设计如图:
(图片来源自MSDN)
Entity Framwork已经成为微软推荐的ORM方案。接下来我们将介绍如何使用EF框架访问MySQL数据库。
安装MySQL Connector
首先,为了使Visual Studio支持MySQL,需要安装MySQL Connector/Net,可以从这个地址找到下载:
http://dev.mysql.com/downloads/connector/net/6.6.html#downloads
我选用的是6.6.5版本。最新版是6.7.4,但安装包里面似乎缺少了Visual Studio集成支持。
安装过程很简单,按照向导步骤下一步即可。
从数据库生成实体模型
在Visual Studio项目中,右键新建项,打开新建项对话框,选择添加ADO.NET实体数据模型:
打开实体数据模型向导:
勾选要映射到模型中的表。推荐勾选“确定所生成对象名称的单复数形式”,不勾选“在模型中加入外键列”。
在生成模型时,VS会自动根据数据库的外键关系,为实体对象创建相应的关联。勾选“在模型中加入外键列”则会把外键列也生成到字段中。
点击完成即可完成模型的生成。打开刚刚生成的*.edmx文件,可以对生成的模型进行进一步调整。
查询实例
下面给出一个简单的CRUD的例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EFDemo
{
class Program
{
static void Main(string[] args)
{
Query();
Insert();
Query();
Update();
Query();
Delete();
Query();
}
/// <summary>
/// 查询
/// </summary>
static void Query()
{
var context = new TestEntities();
var users = from e in context.Users select e;
foreach (var u in users)
{
Console.WriteLine(u.Name);
Console.WriteLine(u.Pass);
Console.WriteLine("-------------");
}
Console.WriteLine("=====================");
}
/// <summary>
/// 插入
/// </summary>
static void Insert()
{
var context = new TestEntities();
User user = new User();
user.Name = "test002";
user.Pass = "test123";
context.Users.AddObject(user);
context.SaveChanges();
}
/// <summary>
/// 更新
/// </summary>
static void Update()
{
var context = new TestEntities();
var user = (from e in context.Users select e).First();
user.Pass = "123";
context.SaveChanges();
}
/// <summary>
/// 删除
/// </summary>
static void Delete()
{
var context = new TestEntities();
var user = (from e in context.Users where e.Name.Equals("test002") select e).First();
context.Users.DeleteObject(user);
context.SaveChanges();
}
}
}