ef mysql连接字符串_Entity Framework 6 自定义连接字符串ConnectionString连接MySQL

本文介绍了如何在VS2015中使用Entity Framework 6创建ADO.NET实体数据模型并自定义MySQL的连接字符串。通过代码动态生成连接字符串,避免在配置文件中暴露敏感信息。示例代码展示了如何构建和使用自定义连接字符串的dvapEntities上下文。
摘要由CSDN通过智能技术生成

在开始介绍之前,首先来看看官方对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实体数据模型。

726bf7f5aae493f33e86d750e0676476.png

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

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

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

54ab1751df22f656beadd48fbc0bdb33.png

图二 选择模型内容

3  新建连接。

7c4c43c4e72a6e3789a8eb4b55c26092.png

图三 新建连接

b6995f60cd52ad8237627d12db62ca3a.png

图四 选择数据源

a97c570de27b86611c7afea9132d6e75.png

图五 修改连接属性

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

fbef4528af557fc64011da211356f273.png

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

523f042630f7c006c3714ae04184a4de.png

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

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

有时候我们不仅仅需要在配置文件中配置,这样我们就暴露了很多重要的信息,而在很多时候我们需要通过代码来生成连接字符串,那么这该怎么做呢?因为这个配置文件还是包含很多信息的,经过我的许多努力,终于在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 { get; set; }

public virtual DbSet echarts_barcharts_singleverticalcolumn { get; set; }

public virtual DbSet echarts_barcharts_singleverticalcolumnproperty { get; set; }

public virtual DbSet logs { get; set; }

public virtual DbSet options { get; set; }

public virtual DbSet test_stackhistogram { get; set; }

public virtual DbSet 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 "";

}

}

如果想查看当前代码示例请点击

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值