博客園現代化建設——Entity Framework
在博客園新版博客后臺的開發中,為了將園子的現代化建設步伐邁得更大一些,準備裝備最先進的武器。之前已經配備ASP.NET MVC 3,目前正在試驗剛從微軟引進的最新型號新式武器——Entity Framework 4.1 RC。
試驗情況分析:
1. 數據庫連接字符串的回歸
在之前版本的Entity Framework中,微軟另搞了一套連接字符串,以至無法直接使用原來的ADO.NET連接字符串。害得我們只能改裝它,以重用以前的連接字符串,詳見在Entity Framework中重用現有的數據庫連接字符串。
在這個版本中,微軟終于知錯就改,直接使用ADO.NET連接字符串,代碼如下:
- public class BlogDbContext : DbContext
- {
- public BlogDbContext()
- : base(ConfigurationManager.ConnectionStrings["BlogDB"].ConnectionString)
- {}
- }
這樣多好,雖然是新式武器,原來的炮彈照樣用。
2. 失靈的Entity Data Model
這個不知是VS 2010 SP1還是Entity Framework 4.1 RC的Bug,無法在VS2010中通過Entity Data Model向導創建Entity Data Model。見下圖:
點擊下一步,選擇連接字符串的窗口一閃而過...然后什么也沒發生,.edm文件也沒創建。
難道VS2010在玩捉迷藏的游戲?那就捉唄...終于把它給找出來了,方法是:在VS2010的Server Explorer中刪除所有的數據庫連接。
但是,在創建連接字符串之后,“奇跡”出現了:
畢竟就不是正式版,出點Bug也情有可原,而且本來也沒指望Entity Data Model,只是想從數據庫生成實體類,省點力氣。既然它失靈了,那就手寫實體類代碼唄。
3. 實體類與數據庫表的自動映射
1) 自動在實體類中發現“主鍵”屬性,前提是屬性名稱是ID或者實體類名+ID,比如下面的實體類:
- public class Blog
- {
- public int BlogID { get; set; }
- public string Application { get; set; }
- public string Author { get; set; }
- public string UserName { get; set; }
- }
Entity Framework會自動發現BlogID就是主鍵,當然,你也可以通過[Key]指定主鍵。
2) 如果實體類的屬性名與數據庫表的字段名相同,不需要任何配置,Entity Framework會自動進行映射。
3) 如果實體類的類名與數據庫表的表名相同,不需要任何配置,Entity Framework會自動進行映射。否則,要通過下面的代碼進行手工映射:
- public class BlogDbContext : DbContext
- {
- protected override void OnModelCreating(DbModelBuilder modelBuilder)
- {
- modelBuilder.Entity<Blog>().ToTable("blog_Config");
- }
- }
注:Blog是實體類名,blog_Config是數據庫表名。
如果符合自動映射的條件,使用Entity Framework很方便,只要在數據訪問層添加Entity Framework的引用,并添加一個繼承自DbContext的類,然后就可以隨時隨地使用。
試驗結論:
該武器雖然有部件失靈,但總體來說攜帶方便,部署靈活,自動化程度高,是現代化建設的必備!
原文鏈接:http://www.cnblogs.com/dudu/archive/2011/03/22/entity_framework_4_1_rc.html