• 使用Entity Framework访问MySQL数据库


    简介

    Entity Framework (EF,ADO.NET Entity Framework)是微软官方提供的.NET平台的ORM框架。相比于LINQ TO SQL,EF框架具有很明显的优势:

    • EF框架支持多种数据库,而不仅仅局限于微软的SQL Server,MySQL,Oracle都有良好的支持。
    • 支持存储过程。
    • 强大的可视化模型设计工具,与Visual Studio深度整合。
    • 与.NET平台的其他技术整合良好。

    Entity Framework的架构设计如图:

    EntityFramework(en-us,MSDN.10)

    (图片来源自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实体数据模型:

    ef_step1

    打开实体数据模型向导:

    ef_step2

    选择数据库连接。如果现有的连接中没有,请点击新建连接:

    ef_step3.1

    点击继续按钮即可设置MySQL数据库的连接信息:

    ef_step3.2

    创建连接完成后,即可选择要映射的对象:

    ef_step4

    勾选要映射到模型中的表。推荐勾选“确定所生成对象名称的单复数形式”,不勾选“在模型中加入外键列”。

    在生成模型时,VS会自动根据数据库的外键关系,为实体对象创建相应的关联。勾选“在模型中加入外键列”则会把外键列也生成到字段中。

    点击完成即可完成模型的生成。打开刚刚生成的*.edmx文件,可以对生成的模型进行进一步调整。

    ef_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();
            }
        }
    }
  • 相关阅读:
    【动画技巧】在Flash中自定义鼠标外观
    【动画技巧】GIF动画转SWF小技巧
    SQL Server 2008空间数据应用系列十一:提取MapInfo地图数据中的空间数据解决方案
    SQL Server 2008空间数据应用系列十:使用存储过程生成GeoRSS聚合空间信息
    jQuery的模板与数据绑定插件
    ASP.NET MVC 入门5、View与ViewData
    一个jQuery写的虚拟键盘
    ASP.NET MVC 入门4、Controller与Action
    使用XML文件来动态配置ASP.NET MVC的Route规则
    ASP.NET MVC 入门9、Action Filter 与 内置的Filter实现(介绍)
  • 原文地址:https://www.cnblogs.com/guoxiongfei/p/3780497.html
Copyright © 2020-2023  润新知