EntityFramework 5.0 CodeFirst 教程01-搭建環境和快速上手


----------------------------目錄------------------------------

EntityFramework 5.0 CodeFirst 教程03-數據結構的定義/列的屬性 (2015-07-22 17:30)

EntityFramework 5.0 CodeFirst 教程02-刪除和修改/架構改變異常的處理 (2015-07-14 17:50)

EntityFramework 5.0 CodeFirst 教程01-搭建環境和快速上手 (2015-07-13 10:48)

----------------------------目錄------------------------------

    網上關於EntityFramework 5.0的教程很多,但是大多數都是代碼整理不清晰,有些甚至是拷貝,代碼丟失等問題,本人最近也有一個項目是用到EntityFramework 5.0 並且是code first的使用方式,鑒於這個在谷歌上面找了一本國外人寫的code first的電子書,英文版的,配合着電子詞典看下去,感覺不錯,寫的非常清晰有條理,所以分享給大家。

    首先是電子書的下載,如果想只看電子書的朋友,可以直接下載下來,不用再往下讀了。
    下載地址,百度網盤:http://pan.baidu.com/s/1bne2QsR
    本教程只適合使用,所以一開始就上代碼了,如果想掌握各種理論的朋友,可能不適合繼續閱讀下去,如果想快速地使用上EntityFramework 5.0 CodeFirst ,可以閱讀下去
    創建一個.NET 4.5的控制台應用程序,本人使用的VS 2013 建議讀者也使用這個IDE
   
    就是一個控制台應用程序,下面引用 EntityFramework.dll 
    首先我們來創建一個Person的類,只有 有姓FirstName 和名LastName 還有主鍵ID(PersonId)
  一切從簡單開始,不大喜歡像其他教程一樣,例子都搞得非常復雜,例子應該要抓住核心,排除其他的和主題不關的  bamn.cn
    整個類如下: 
 
 public class Person
    {
        public int PersonId { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

 

    我們再創建一個PersonContext 上下文類,需要繼承DbContext
 
public class PersonContext : DbContext
    {
        public PersonContext()
            : base("name=dblink")
        {
        }
        public DbSet<Person> People { get; set; }
    }

 

   細心的同學可能看到構造方法后面的 base("name=dblink") 這里的dblink就是數據庫連接名稱了 看下面的配置文件就清楚了
然后就是數據庫的連接了,在配置文件app.config中添加鏈接字符串
   <?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <connectionStrings>
    <add name=" dblink "
    connectionString="Data Source=.\MSSQLSERVER2008;Initial Catalog=EFDemo;User ID=sa;Password=123321;"
    providerName="System.Data.SqlClient"/>
  </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>
    
  下面我們就對數據庫進行操作了,首先是創建數據庫,創建數據庫試用EF只需要一句代碼就可以了,EF會幫我們將數據庫還有數據表創建好的
我們在program.cs的main方法中添加下面代碼
 
class Program
    {
        static void Main(string[] args)
        {
            using (var personContext = new PersonContext())
            {
                //如果不存在數據庫則創建
                bool res = personContext.Database.CreateIfNotExists();
            }
            Console.ReadKey();
        }
    }

 

我們再查找數據庫,發現已經自動地創建好了數據庫還有表了,看下圖:
 
這里有一點要注意的:
   就是實體Person創建的時候,需要一個主鍵,這個主鍵必須是類名+ID 比如 這里的 PersonId 如果你改成其他的比如
你將類改為PersonModel 但是ID還是 PersonId 那么久會報下面的錯誤了,這里大家要注意的地方,還有就是這里的ID 可以寫成Id都沒問題的,這個應該是微軟的EF框架約定俗成的一個地方吧。
 
One or more validation errors were detected during model generation:
\tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'PersonModel' has no key defined. Define the key for this EntityType.
\tSystem.Data.Entity.Edm.EdmEntitySet: EntityType: EntitySet 'People' is based on type 'PersonModel' that has no keys defined.
 
下面我們來添加一條數據到表中
 
 在main方法中加入下面代碼
  
 //往數據庫中添加數據
var person = new Person
{
    FirstName = "John",
    LastName = "Doe"
};
personContext.People.Add(person);
personContext.SaveChanges();

 

執行后 查詢表發現記錄已經添加進去了
 
所有的操作基本都是通過這個context上下文來實現,比如添加記錄,只需要add一個實體進去 然后再savechanges 這個方法執行后,EF才會將數據保存到表里面。
 
下面再來獲取表中的數據
 //獲取數據
var savedPeople = personContext.People;
foreach (var p in savedPeople)
{
    Console.WriteLine("Last name:{0},first name:{1},id {2}",
    p.LastName, p.FirstName, p.PersonId);
}

 

獲取數據也很簡單,這里是獲取所有的記錄,然后遍歷就可以取得數據了,非常方便
當我們執行多次剛才的代碼的時候,EF會添加多條記錄進去,並且ID也不一樣了,ID主鍵是自增長的
 
 
 所有代碼如下:
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var personContext = new PersonContext())
            {
                //如果不存在數據庫則創建
                bool res = personContext.Database.CreateIfNotExists();
                //往數據庫中添加數據
                var person = new Person
                {
                    FirstName = "John",
                    LastName = "Doe"
                };
                personContext.People.Add(person);
                personContext.SaveChanges();
                //獲取數據
                var savedPeople = personContext.People;
                foreach (var p in savedPeople)
                {
                    Console.WriteLine("Last name:{0},first name:{1},id {2}",
                    p.LastName, p.FirstName, p.PersonId);
                }
            }
            Console.ReadKey();
        }
    }
}
代碼結構:
本集源碼:
 
   


免責聲明!

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



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