Entity Framework 6 自定义连接字符串ConnectionString连接MySQL

  在开始介绍之前,首先来看看官方对Entity Framework的解释:Entity Framework (EF) is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the data-access code that developers usually need to write.这里面涉及到几个关键的知识点:1 首先它是一个对象关系映射。2 其次它使用的是特定于域的对象。 3 它摒弃了传统的通过SQL语句来访问数据库的方式。其实我们通过对比Linq To SQL我们会发现他们几乎都是一样的。因为人的思想更习惯于使用面向对象的方式,因为它更便于理解而且也使用起来更加方便快捷。

  下面就来一步步介绍如何在VS2015中添加ADO.NET实体数据模型。

图一  添加ADO.NET实体数据模型

  1  新建一个文件夹,并向这个文件夹中添加一个ADO.NET实体数据模型,例如ModelTest。

2  添加一个来自数据库的EF设计器,这里有四个选项,每一个都对应一种模型内容,这里暂时不介绍,在以后的序列中在做介绍。

图二 选择模型内容

  3  新建连接。

图三 新建连接

图四 选择数据源

图五 修改连接属性

  4 选择数据库对象,并生产对象关系映射。

图六 选择数据库对象和设置

图七 生产的特定于域的对象

下面一部分我们来看看自动生成的连接字符串。

<add name="dvapEntities" connectionString="metadata=res://*/EF6.ModelTest.csdl|res://*/EF6.ModelTest.ssdl|res://*/EF6.ModelTest.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;password=12345;database=dvap"" providerName="System.Data.EntityClient" />

  有时候我们不仅仅需要在配置文件中配置,这样我们就暴露了很多重要的信息,而在很多时候我们需要通过代码来生成连接字符串,那么这该怎么做呢?因为这个配置文件还是包含很多信息的,经过我的许多努力,终于在msdn上面找到了答案。

string server = System.Configuration.ConfigurationManager.AppSettings["MySQLServer"];
            if (!string.IsNullOrEmpty(server))
            {
                string providerName = "MySql.Data.MySqlClient";
                MySqlConnectionStringBuilder sqlbulider = new MySqlConnectionStringBuilder();
                sqlbulider.Server = server;
                sqlbulider.UserID = "root";
                sqlbulider.Password = "12345";
                sqlbulider.Database = "dvap";
                sqlbulider.AllowZeroDateTime = true;
                sqlbulider.ConvertZeroDateTime = true;
                sqlbulider.IntegratedSecurity = true;

                EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
                entityBuilder.Provider = providerName;
                entityBuilder.ProviderConnectionString = sqlbulider.ToString();
                entityBuilder.Metadata = @"res://*/EF6.DvapRegularModel.csdl|res://*/EF6.DvapRegularModel.ssdl|res://*/EF6.DvapRegularModel.msl";
                m_ConnectionString = entityBuilder.ToString();
            }

  通过上面的方式我们能够生成正确的连接字符串,在生成连接字符串之后我们需要将这个连接字符串传入到自动生成的dvapEntities对象中,这里也贴出部分代码。  

namespace TestEF6.EF6
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

    public partial class dvapEntities : DbContext
    {
        public dvapEntities()
            : base("name=dvapEntities")
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public virtual DbSet<dvap_scene_business> dvap_scene_business { get; set; }
        public virtual DbSet<echarts_barcharts_singleverticalcolumn> echarts_barcharts_singleverticalcolumn { get; set; }
        public virtual DbSet<echarts_barcharts_singleverticalcolumnproperty> echarts_barcharts_singleverticalcolumnproperty { get; set; }
        public virtual DbSet<logs> logs { get; set; }
        public virtual DbSet<options> options { get; set; }
        public virtual DbSet<test_stackhistogram> test_stackhistogram { get; set; }
        public virtual DbSet<users> users { get; set; }
    }
}

  仅仅使用默认的 dvapEntities函数肯定达不到要求,我们需要重载一个能够将连接字符串作为参数的构造函数,这里我们表述如下:

public dvapEntities(string connectionString)
            :base(connectionString)
        {

        }

  后面我们就可以使用这个构造函数来获取数据库中相应的数据了,这里我们也贴出相关的代码来作为参考。

public string GetOptionValue(string option_name)
      {
            try
            {
                using (var db = new EF6.dvapEntities(m_ConnectionString))
                {
                    EF6.options option = null;
                    option = (from x in db.options
                              where x.OptionName == option_name && x.UserID == 0
                              select x).SingleOrDefault() ?? null;
                    if (null != option)
                    {
                        return option.OptionValue;
                    }
                }
                return "";
            }
            catch (Exception ex)
            {
                return "";
            }
      }

  如果想查看当前代码示例请点击此处进行下载!


  

时间: 06-30

Entity Framework 6 自定义连接字符串ConnectionString连接MySQL的相关文章

基于Entity Framework的自定义分页,增删改的通用实现

简介 之前写个一个基于Dapper的分页实现,现在再来写一个基于Entity Framework的分页实现,以及增删改的通用实现. 代码 还是先上代码:https://github.com/jinweijie/EF.GenericRepository 如何运行示例 还是像先前一样: 1. 先Clone下代码,在Database里面解压缩Database.7z 2. Attach到Sql Server LocalDB上.如果你用的不是Sql Server的LocalDB,你需要更改App.Conf

处理连接字符串的安全性

1. 数据库安全性 1.1.  尽量使用 Windows 身份验证而不是 SQL Server 验证 – 安全容易管理 –不需要在连接字符串中设置用户名和密码 – 可以通过密码策略保证安全 – 密码不会通过明文在网络中传递 1.2. 集成 Windows 身份验证 提供程序 语法 SqlClient Integrated Security=true; -- or -- Integrated Security=SSPI; OleDb    Integrated Security=SSPI; Odb

如何正确获得mysql,access的ADO连接字符串,并使用该连接字符串连接数据库

如何正确获得mysql的ADO连接字符串,摘自网页http://blog.csdn.net/zyq5945/article/details/5486393 首先你正确安装了MYSQL的数据库驱动程序(mysql-connector-odbc-5.1.6-win32.msi ) 1.在桌面上新建一个空的文本文件mysql.txt,重命名为mysql.udl: 2.双击这个mysql.udl文件,打开“数据库连接属性”对话框,在“提供程序”页选择”Micrsoft Ole DB Provider f

SQL localdb 连接字符串

http://blog.csdn.net/greystar/article/details/47699797 原来SQL 2012 下连接LOCALDB,字符串为: Data Source=(LocalDB)\v11.0;Initial Catalog=D:\aa.MDF;Integrated Security=True 现在升级到SQL 2014,程序升级到VS2015,在lightswitch里添加了表,这个会自动修改数据库结构.调试发布都没有问题 连接字符串仍为Data Source=(L

Entity Framework学习之创建Entity Framework数据模型

1.准备 Visual Studio 2013 .NET 4.5 Entity Framework 6 (EntityFramework 6.1.0 NuGet package) Windows Azure SDK 2.2 (可选) 2.Contoso University web应用程序 此应用程序允许用户 查看.更新student. course和instructor 信息: 网站UI样式是由内置模板生成的 3.新建MVC5 web应用程序 新建项目并命名为"ContosoUniversit

Entity Framework With Mysql 之Code First

Entity Framework 4.0现在也可以支持Mysql数据库了,这篇文章将向你展示如何用Code First的方式来实现. 1.首先新建一个项目,在项目中用NuGet添加如下引用: 2.在web.config文件中添加如下配置: 1 <connectionStrings> 2 <add name="MyTestContext" connectionString="Data Source=127.0.0.1;port=3306;Initial Cat

Entity Framework 6 Recipes 2nd Edition(目录索引)

Chapter01. Getting Started with Entity Framework / 实体框架入门 1-1. A Brief Tour of the Entity Framework World / 简单浏览实体框架世界 goto1-2. Using Entity Framework / 使用实体框架 Chapter02. Entity Data Modeling Fundamentals / 实体数据建模基础 2-1. Creating a Simple Model2-2. C

Using MySQL Connector .NET 6.6.4 with Entity Framework 5

I had been waiting for the latest MySQL connector for .NET to come out so I can move on to the new and sleek Visual Studio 2012 for my projects. Found out connector 6.6.4 has been out which can work with VS2012 so I happily install it. I start a bran

让EF飞一会儿:如何用Entity Framework 6 连接Sqlite数据库

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 获取Sqlite 1.可以用NuGet程序包来获取,它也会自动下载EF6 2.在Sqlite官网上下载对应的版本:http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.