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

发布时间:2017-7-9 7:23:19编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Entity Framework 6 自定义连接字符串ConnectionString连接MySQL ",主要涉及到Entity Framework 6 自定义连接字符串ConnectionString连接MySQL 方面的内容,对于Entity Framework 6 自定义连接字符串ConnectionString连接MySQL 感兴趣的同学可以参考一下。

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 "";            }      }

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


上一篇:ffmpeg的使用
下一篇:2017第26周六 知与行

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款