connectionstring mysql_Entity Framework 6 自定义连接字符串ConnectionString连接MySQL
在開始介紹之前,首先來看看官方對(duì)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.這里面涉及到幾個(gè)關(guān)鍵的知識(shí)點(diǎn):1 首先它是一個(gè)對(duì)象關(guān)系映射。2 其次它使用的是特定于域的對(duì)象。 3 它摒棄了傳統(tǒng)的通過SQL語句來訪問數(shù)據(jù)庫的方式。其實(shí)我們通過對(duì)比Linq To SQL我們會(huì)發(fā)現(xiàn)他們幾乎都是一樣的。因?yàn)槿说乃枷敫?xí)慣于使用面向?qū)ο蟮姆绞?#xff0c;因?yàn)樗阌诶斫舛乙彩褂闷饋砀臃奖憧旖荨?/p>
下面就來一步步介紹如何在VS2015中添加ADO.NET實(shí)體數(shù)據(jù)模型。
圖一 ?添加ADO.NET實(shí)體數(shù)據(jù)模型
1 ?新建一個(gè)文件夾,并向這個(gè)文件夾中添加一個(gè)ADO.NET實(shí)體數(shù)據(jù)模型,例如ModelTest。
2 ?添加一個(gè)來自數(shù)據(jù)庫的EF設(shè)計(jì)器,這里有四個(gè)選項(xiàng),每一個(gè)都對(duì)應(yīng)一種模型內(nèi)容,這里暫時(shí)不介紹,在以后的序列中在做介紹。
圖二 選擇模型內(nèi)容
3 ?新建連接。
圖三 新建連接
圖四 選擇數(shù)據(jù)源
圖五 修改連接屬性
4 選擇數(shù)據(jù)庫對(duì)象,并生產(chǎn)對(duì)象關(guān)系映射。
圖六 選擇數(shù)據(jù)庫對(duì)象和設(shè)置
圖七 生產(chǎn)的特定于域的對(duì)象
下面一部分我們來看看自動(dòng)生成的連接字符串。
有時(shí)候我們不僅僅需要在配置文件中配置,這樣我們就暴露了很多重要的信息,而在很多時(shí)候我們需要通過代碼來生成連接字符串,那么這該怎么做呢?因?yàn)檫@個(gè)配置文件還是包含很多信息的,經(jīng)過我的許多努力,終于在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();
}
通過上面的方式我們能夠生成正確的連接字符串,在生成連接字符串之后我們需要將這個(gè)連接字符串傳入到自動(dòng)生成的dvapEntities對(duì)象中,這里也貼出部分代碼。
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; }
}
}
僅僅使用默認(rèn)的?dvapEntities函數(shù)肯定達(dá)不到要求,我們需要重載一個(gè)能夠?qū)⑦B接字符串作為參數(shù)的構(gòu)造函數(shù),這里我們表述如下:
public dvapEntities(string connectionString)
:base(connectionString)
{
}
后面我們就可以使用這個(gè)構(gòu)造函數(shù)來獲取數(shù)據(jù)庫中相應(yīng)的數(shù)據(jù)了,這里我們也貼出相關(guān)的代碼來作為參考。
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 "";
}
}
如果想查看當(dāng)前代碼示例請(qǐng)點(diǎn)擊
總結(jié)
以上是生活随笔為你收集整理的connectionstring mysql_Entity Framework 6 自定义连接字符串ConnectionString连接MySQL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: seqkit根据基因id_Microwe
- 下一篇: C++学习之路 | PTA乙级—— 10