http://www.cnblogs.com/zhangran/archive/2012/08/26/2657864.html
說明: 經過一段時間的小捉摸終於基本掌握在vs2012中如何使用localDB了,當然包括其中令人頭疼的
connectionStrings的設置,這也算承接我之前寫的一篇文章初試visual studio2012的新型數據庫Loc
alDB,現在就將一下我的理解,初學可能有錯,歡迎指正^_^
首先我是在vs2012種創建的一個mvc3項目,然后用的是EntityFramework的方式來訪問數據庫的,EF不太懂得也
沒多大關系,我感覺EF就是一個類庫文件,里面許多便於我們訪問數據庫、操作數據庫的一些類和方法就是了。
關於EF大家一定清楚它的Code First模式吧,這次我是用兩種方式分別來調用數據庫的,第一種就是普通的Code
First方式,先建立一個Model類,然后自動mapping一個數據庫出來,第二種就是自己手動創建一個數據庫,然后
改寫連接字符串connectionstrings使自己的應用能連接數據庫。下面分着講:
第一種:
創建一個實體類跟一個數據庫上下文類
{
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;}
}
也許上面的類名大家面熟吧,呵呵,我是在做pro asp.net mvc3上面的練習時遇到的問題,就直接把我現成的代碼粘過來了(無侵權之意)。
接下來就是修改web.config下面的連接字符串了
<add name="EFDbContext" providerName="System.Data.SqlClient"
connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=SportsStore;
Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\SportsStore.mdf" />
其中,name屬性一定要跟自己的DbContext類名相一致,如果此處不一致就找不到數據庫了,它倆就是匹配作
用 。這樣寫之后EFDbContext類才會去跟該字符串指向下的數據庫做映射。
其中的Data Source指定數據庫類型
其中Integrated Security指的是登陸類型,此處跟寫“True”作用一樣,就是可以以windows 身份登錄,每
次登錄你就不用輸賬號密碼了。如果是“false”就是指的sql server方式登錄就要賬號密碼齊全。
其中Initial Catalog屬性就是初始數據庫名稱,字面也知道個大概,我也不詳細說了,至於他有沒有深層次
的作用我還不知道,這不是易出錯點。
其中AttachDBFilename指的是一個路徑,放mdf文件的地方,上面的寫法是指的該文件放在自己工程的
App_Data文件夾下面,AttachDBFilename=c:\SportsStore.mdf指的就是c盤根目錄下了,所以你可以根據
這個屬性來改變訪問的mdf文件。
上面的字符串寫完以后運行會自動聲稱一個數據庫SportsStore在你的App_Data文件夾下。
上圖可以看出生成一個EFDbContext數據庫,開始我就是以為這是個數據庫名稱,但想想自己的數據庫不是
SportsStore嗎,后來判斷此名應該是一個連接的名詞,當你改變connectionstrings下面的name屬性時,
該名字是跟着變化的。可以在這個Products表中添加幾條信息,然后從程序中讀出來,我的沒問題很順利
得到了數據庫(當然這個順利也是折騰了好久之后的了)。
第二種:
當然還得需要上面的實體類,不許多講,打開服務器資源管理器,右鍵點擊“數據連接”創建新Sql Server數
據庫,服務器名填(localdb)\v11.0
我們創建一個新數據庫名為“People”,目的是用前面的程序再去訪問這個新建的數據庫,熟悉一下怎樣進行數據庫之間的轉換使用。
在這個新數據庫中創建一個表Products,里面的結構要跟前面的一個樣,這樣才能把證你的實體類跟它也能正確匹配。
注意: 這里要說明的是在定義表結構的時候,想要保存表是按左上角的“更新”按鈕,而不是像以前那樣ctrl+s,來保存了。
然后就是修改connectionstrings改變應用讓程序訪問People數據庫而不再是SportsStore數據庫。
<add name="EFDbContext" providerName="System.Data.SqlClient" connectionString=
"Data Source=(LocalDb)\v11.0;Initial Catalog=People;
Integrated Security=SSPI;AttachDBFilename=C:\Users\ran\People.mdf"/>
記得name屬性該填的內容要准確,另外自己建的數據庫默認在用戶文件夾下面。
完成這些操作就能順利的改變數據庫的引用了^_^
再講一個我范二的地方,建表的時候表的列名要跟你的實體類的屬性名一一對應的,而我寫的順序錯了,結果在執行的時
候vs總會自動新建一個數據庫實例,后來總算明白了,所以映射這東西就是一一對應一處也不能出錯的,望謹記