Entity Framework7 入門之全功能.NET(Console, WinForms, WPF等)使用EF7

 

 

  昨天,咱們介紹了EF的新特性和開發計劃,若是你還不瞭解,請移步 Entity Framework7 有哪些不一樣?如今開發到什麼程度了? 。今天,咱們開學習全功能.NET(Full .NET)下使用EF7。官方已經寫了關於最新的 Pre-Release版本EF7.0.0-beta7的入門教程,很詳細,我就沒有必要本身再重複造輪子了,只由於是英文的,爲了方便很多懶人(不是看不懂英文,是看着英文就不想看下去,無名的以爲複雜。還有一點就是不肯意去國外的站點去查找資料),特做一個簡單的翻譯。若是你不是懶人的話,請穩步(原文地址:    http://ef.readthedocs.org/en/latest/getting-started/full-dotnet.html),隨便幫幫我看看,有什麼不妥的地方,歡迎指正,謝謝!html

  本文,咱們將構建一個控制檯應用,讓它使用EF7執行基本的數據訪問。你將在本文看到以下的知識點:git

  一、安裝 NuGet 2.8.6 或更高版本;github

  二、建立一個新的項目;sql

  三、安裝實體框架(EF7.0.0-beta7);數據庫

  四、建立模型;api

  五、建立數據庫;框架

  六、使用模型;ide

  你能夠在Github上查看本文的示例:https://github.com/aspnet/EntityFramework.Docs/tree/master/docs/getting-started/full-dotnet/sample函數

  注意:本文使用的版本是EF7.0.0-beta7,它是在NuGet.org上可用的最新預發行版本。 你能夠在 https://www.myget.org/F/aspnetvnext/api/v2/ 獲取最新代碼的編譯版本。代碼變化太快,咱們不會爲入門教程維護最新的文檔。post

 

1、安裝 NuGet 2.8.6 或更高版本

   安裝EF7須要NuGet2.8.6,或更高的版本。安裝更新後,請重啓你的Visual Studio。

  一、Visual Studio 2015  不須要安裝,由於它已經包含了一個兼容版本;

  二、Visual Studio 2013  請安裝針對VS2013的最新的NuGet版本

  三、Visual Studio 2012  請安裝針對VS2012的最新的NuGet版本

  注意:NuGet 版本號可能會形成混淆,咱們所需的是 2.8.6 擴展版本2.8.60610.xxx。

 

2、建立一個新項目

  一、打開Visual Studio(本文使用的是Visual Studio 2015,你可使用VS2012及以上的版本);

  二、文件(File)->新建(New)->項目(Project)...

  三、從左邊菜單選擇Template->Visual C#->Windows;

  四、選擇 Console Application(控制檯應用)項目模板;

  五、選擇.NET4.5或者更高的.NET框架;

  六、給你的項目命名,而後點肯定(OK);

 

3、安裝Entity FrameWork

  爲了能使用EF7,你得先安裝上你想使用的數據庫及提供者(Provider),本文使用的是 SQL Server。下面是EF7下可用的數據庫提供者(Database Provider)清單。

    一、EntityFramework.SqlServer     二、EntityFramework.SQLite     三、EntityFramework.InMemory     四、EntityFramework.SqlServerCompact40     五、EntityFramework.SqlServerCompact35     六、EntityFramework.Npgsql

  A、在菜單上選擇Tools->Nuget Package Manager(Nuget 程序包管理器)->Package Manager Console(程序包管理器控制檯);

  B、運行命令 「Install-Package EntityFramework.SqlServer –Pre」

  由於本文後面還要使用實體框架的相關命令來維護數據庫,因此咱們如今還得安裝命令程序包(Commands package)。

  C、運行命令「Install-Package EntityFramework.Commands –Pre」;

 

4、建立模型

  如今是時候定義一個上下文和實體類來構建模型了。

    一、Project->Add Class(添加類)...;

    二、鍵入Modle.cs做爲類名,並點擊OK(肯定);

    三、使用下面的代碼替換文件中的內容;

  注意: OnConfiguring 方法(EF7中新增的)用於定義使用的提供者,和其它可選的配置。

 1 using Microsoft.Data.Entity;  2 using System.Collections.Generic;  3  4 namespace EFGetStarted.ConsoleApp  5 {  6 public class BloggingContext : DbContext  7  {  8 public DbSet<Blog> Blogs { get; set; }  9 public DbSet<Post> Posts { get; set; } 10 11 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 12  { 13 // Visual Studio 2015 | 使用Visual Studio建立的LocalDb 12 實例 14 optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;"); 15 16 // Visual Studio 2013 | 使用Visual Studio建立的LocalDb 11 實例 17 // optionsBuilder.UseSqlServer(@"Server=(localdb)\v11.0;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;"); 18 19 // Visual Studio 2012 | 使用Visual Studio建立的SQL Express實例 20 // optionsBuilder.UseSqlServer(@"Server=.\SQLEXPRESS;Database=EFGetStarted.ConsoleApp;Trusted_Connection=True;"); 21  } 22 23 protected override void OnModelCreating(ModelBuilder modelBuilder) 24  { 25 // 配置Blog.Url爲Required 26 modelBuilder.Entity<Blog>() 27 .Property(b => b.Url) 28  .Required(); 29  } 30  }     //  博客 31   public class Blog 32  { 33 public int BlogId { get; set; } 34 public string Url { get; set; } 35 36 public List<Post> Posts { get; set; } 37  } 38   //  文章 39 public class Post 40  { 41 public int PostId { get; set; } 42 public string Title { get; set; } 43 public string Content { get; set; } 44 45 public int BlogId { get; set; } 46 public Blog Blog { get; set; } 47  } 48 }

 

 5、建立數據庫

  擁有模型以後,就可使用數據遷移(Migrations)來建立數據庫.

    一、在菜單上選擇Tools->Nuget Package Manager(Nuget 程序包管理器)->Package Manager Console(程序包管理器控制檯);

    二、執行命令「Add-Migration MyFirstMigration」 爲剛纔的模型建立一個遷移支架(scaffold);

    三、執行命令「Update-Database」  應用一個遷移到數據庫。由於數據庫不存在,因此在應用遷移以前,它會爲你建立一個數據庫;

  提示:若是你對模型時行了修改,請使用命令「Add-Migration」支架(scaffold)一個新的遷移來應用相應的修改。你一旦檢查並確認了生成的支架(scaffold)代碼,便使用命令「Update-Database」應用這些修改到數據庫。

 

6、使用模型

  如今可使用模型執行數據訪問了。

    一、打開文件 Program.cs;

    二、使用下面的代碼替換文件中的內容;

 1 using System;  2  3 namespace EFGetStarted.ConsoleApp  4 {  5 class Program  6  {  7 static void Main(string[] args)  8  {  9 using (var db = new BloggingContext()) 10  { 11 db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" }); 12 var count = db.SaveChanges(); 13 Console.WriteLine("{0} records saved to database", count); 14 15  Console.WriteLine(); 16 Console.WriteLine("All blogs in database:"); 17 foreach (var blog in db.Blogs) 18  { 19 Console.WriteLine(" - {0}", blog.Url); 20  } 21  } 22  } 23  } 24 }

 

  二、Debug->Start Without Debugging(開始執行(不調試));

  你將看到一個blog被保存到了數據庫中,並在控制檯打出來blog的詳細內容,如圖:

 

 

  正如你看到的,文中使用了數據遷移命令,隨着code-first的普遍使用,相信使用它的機會會愈來愈多,下面我把本身使用中遇到的一常問題分享給你們。

    相似下面的異常:

enable-migrations
enable-migrations : 沒法將「enable-migrations」項識別爲 cmdlet、函數、腳本文件或可運行程序的名稱。請檢查名稱的拼寫,若是包括路徑,請確保路徑正確,而後再試一次。
所在位置 行:1 字符: 1
+ enable-migrations
+ ~~~~~~~~~~~~~~~~~
 + CategoryInfo : ObjectNotFound: (enable-migrations:String) [], CommandNotFoundException
 + FullyQualifiedErrorId : CommandNotFoundException。

  致使這個問題緣由通常以下: 

    一、輸入的中劃線「-」格式不對,檢查是否爲全角狀態下輸入,誤輸入了下劃線「_",或是先後有空格;

    二、沒有引用EntityFramework命令,請執行以下名稱(Import-Module 項目路徑\packages\EntityFramework.6.1.3(EF版本)\tools\EntityFramework.psd1)

   另外須要注意的是,執行命令時,默認項目必定要選擇包含模型的項目,如圖:

 

   說到推薦,和閱讀,我有一個不明白的地方,爲何,什麼這個感悟,那個經歷的文章都會有很高的閱讀量和推薦數呢?有一些寫得比較好的博客(好比有些大牛寫的DDD類的文章)卻只有幾百的閱讀量。難道咱們.NET開發人員缺乏的不是技術,是心靈雞湯? 爲何呢?你能告訴我嗎?

相關文章
相關標籤/搜索