LocalDB簡介和在VS2012及以上版本的使用


之前一不小心把自己電腦上的SQL Server弄換了,卸載之后沒立即重裝,於是乎研究了一下LocalDB,感覺還不錯,特別是個人做開發或測試的時候,所以記錄下來並分享給大家。OK,下面開始正題:

什么是LocalDB?

隨着SQL Server 2012的發布,LocalDB躍入我們的視線,它可以被看做是SQL Server Express的輕量級版本。

LocalDB專門為開發人員創建,它非常易於安裝,幾乎無需管理,兼容T-SQL語言,編程接口與SQL Server Express別無二致。

有了LocalDB,開發人員就不需要在自己的筆記本上安裝和維護一個龐大的SQL Server實例了。另外,LocalDB也適用於小型應用環境,開發人員可以將其用於小型生產環境或者嵌入式環境。

LocalDB的核心技術特性

  • 兼容其它SQL Server版本,使用sqlservr.exe作為服務進程,使用相同的客戶端訪問接口(如ADO.NET、ODBC或PDO),兼容T-SQL編程語言。
  • 在同一台計算機上不必安裝多個LocalDB,不同的應用程序可以並行執行多個LocalDB進程,但所有的進程都是從同一個可執行文件(sqlservr.exe)啟動的。
  • LocalDB不會創建任何系統服務,LocalDB進程會根據需要自動啟動、停止。應用程序只需連接“Data Source=(localdb)\v11.0”,LocalDB就會作為應用程序的子進程啟動。隨着連接的終止,LocalDB進程也會隨之停止。
  • LocalDB支持AttachDbFileName屬性,允許開發者指定數據庫文件位置。例如:
    Data Source = (localdb)\v11.0;  Integrated Security = true;  AttachDbFileName = C:\MyData\Database1.mdf

在Visual Studio中使用LocalDB

使用LocalDB需要VS的版本在2012或以上。我這里演示將使用Entity Framework的Code first模式。

第一步:創建一個控制台應用程序:

image

第二步:使用NuGet添加對Entity Framework的引用:

image

第三步:創建實體和DbContext:

public  class Product
    {
        public int ProductID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public decimal Price { get; set; }
        public string Category { get; set; }
    }
    class EFDbContext : DbContext
    {
        public DbSet<Product> Products { get; set; }
    }

最后一步(也是最關鍵的):修改App.config配置文件中的連接字符串:

<connectionStrings >
    <add name="EFDbContext" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=SportsStore;Integrated Security=SSPI;AttachDBFilename=E:\SportsStore.mdf" />
  </connectionStrings>

這里Data Source的值就是指定LocalDB的一個實例。在這個連接字符串中還有一個AttachDBFilename屬性,這是用來指定數據庫文件(包括.mdf以及日志文件)的路徑,我這里放在E盤根目錄下,如果沒有指定,數據庫就會創建到默認地址(C盤你的用戶)下。其他屬性相信大家都不陌生。

測試成果:在Program.cs的main函數中添加以下代碼:

using (var context=new EFDbContext())
            {
                context.Set<Product>().Add(new Product { Price = 1, Name = "p1", Category = "a", Description = "" });
                context.SaveChanges();
              List<Product> products=  context.Set<Product>().ToList();
                foreach (Product  p in products)
                {
                    Console.WriteLine(p.ProductID +" "+p.Name +" "+p.Price);
                }
            }
            Console.ReadKey();

運行調試:

image

在本地磁盤E的根目錄下會出現以下文件:

image

在VS中的SQL Server對象瀏覽窗口也可以看到:

image

總結

LocalDB相比SQL Server要輕量很多,雖說提供的功能不是很多但對於很多開發和測試人員來說足夠了。使用起來也是極其方便的,只需要修改一下連接字符串,我們的程序該怎么寫還是怎么寫就行了。

參考鏈接:http://www.csdn.net/article/2012-03-29/313675

  http://www.cnblogs.com/zhangran/archive/2012/08/26/2657864.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM