Entity Framework 6 自訂連接字串ConnectionString串連MySQL

來源:互聯網
上載者:User

標籤:select   test   context   mos   src   time   rate   lin   entity   

  在開始介紹之前,首先來看看官方對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 "";            }      }

  如果想查看當前程式碼範例請點擊此處進行下載!


  

 

Entity Framework 6 自訂連接字串ConnectionString串連MySQL

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.