Entity Framework 6.0 入門系列 - Code First

簡介

Entity Framework(以下簡稱EF) 是微軟推出的一個ORM框架髓介,按照微軟一貫的傳統(tǒng)十籍,需要等到3.0版本,軟件才會好用杀糯,我第一次看到EF的時候,當(dāng)時的EF只支持從數(shù)據(jù)庫生成復(fù)雜無比的代碼苍苞,所以一直沒有將EF作為生產(chǎn)工具使用固翰。
目前的EF支持三種開發(fā)模式

  • 數(shù)據(jù)庫優(yōu)先(Database First)**
    傳統(tǒng)的開發(fā)模式,先設(shè)計(jì)數(shù)據(jù)庫柒啤,再從數(shù)據(jù)庫生成對應(yīng)的數(shù)據(jù)存取代碼倦挂。
  • 模型優(yōu)先(Model First)
    使用可視化模型設(shè)計(jì)工具,構(gòu)建數(shù)據(jù)模型担巩。
  • 代碼優(yōu)先(Code First)
    這是EF擁抱DDD開發(fā)方援,支持POCO(Plain Old CLR Object)類型的開發(fā)模式。
    也將是我們接下來要介紹的開發(fā)模式涛癌。

工作環(huán)境

Visual Studio 2013/2015

任務(wù)描述

使用Microsoft Entity Framework 6.0(以下簡稱EF) Code First編程模式犯戏,制作一個可運(yùn)行的極簡代碼項(xiàng)目送火。

  • 訂單數(shù)據(jù)表 SaleOrder
  • 基本的CRUD測試

準(zhǔn)備工作

  1. 創(chuàng)建一個控制臺應(yīng)用項(xiàng)目 EFDemo.T1
  2. 使用Nuget Package Manager添加引用
    2.1 右鍵解決方案,選擇菜單"Enable Nuget Package Restore"
    如圖提示先匪,表示Nuget已成功啟用种吸。

2.2 管理解決方案的Nuget程序包
打開Nuget管理工具,聯(lián)機(jī)欄目中呀非,我們看到Entity Framework 排在第二位坚俗,點(diǎn)擊“安裝”即可。如果你沒有看到Entity Framework岸裙,可以在右側(cè)“搜索聯(lián)機(jī)(Ctrl+E)”處鍵入"Entity Framework"進(jìn)行搜索猖败。


書寫代碼

  1. 創(chuàng)建一個實(shí)體類SaleOrder
Public Class SaleOrder
      Public Property Id() As Integer
      Public Property Name() As String
      Public Property Amount As Nullable(Of Decimal)
End Class
  1. 創(chuàng)建數(shù)據(jù)庫上下文 DBContext
Public Class DemoContext Inherits DbContext
      Public Property SaleOrder As DbSet(Of SaleOrder)
End Class
  1. CRUD 代碼
Sub Main()
        Console.WriteLine("*** Entity Framework 演示程序 ***")

        Using db = New DemoContext
            'Create
            Console.Write("新增十行記錄。")
            Dim rnd As New Random
            For I = 1 To 10
                Dim newEntity As New SaleOrder With {.Id = rnd.Next, .Name = "Name" & .Id, .Amount = rnd.NextDouble * 1000}
                db.SaleOrder.Add(newEntity)
            Next
            db.SaveChanges()

            'Read
            Console.WriteLine("讀取一行記錄降允。")
            Dim row = db.SaleOrder.OrderBy(Function(c) c.Id).FirstOrDefault

            'Update
            Console.WriteLine("修改/更新一行記錄恩闻。")
            row.Name = row.Name & " Update at: " & Now

            Console.WriteLine(String.Format("ID: {0}", row.Id))
            Console.WriteLine(String.Format("Name: {0}", row.Name))
            Console.WriteLine(String.Format("Amount: {0}", row.Amount))
            db.SaveChanges()

            'Delete

            Console.WriteLine("刪除一行記錄。")
            Console.WriteLine(String.Format("刪除前共有數(shù)據(jù)記錄{0}行剧董。", db.SaleOrder.Count))
            Dim q = db.SaleOrder.OrderBy(Function(c) c.Id).Skip(3).FirstOrDefault

            db.SaleOrder.Remove(q)
            db.SaveChanges()
            Console.WriteLine(String.Format("刪除后共有數(shù)據(jù)記錄{0}行幢尚。", db.SaleOrder.Count))
        End Using

        Console.WriteLine("按任意鍵退出。")
        Console.ReadKey()
    End Sub

總結(jié)

實(shí)體:三個字段翅楼,五行代碼
數(shù)據(jù): 一個數(shù)據(jù)表尉剩,三行代碼
這就是EF可以開始工作的全部代碼。
考慮到需要一些提示犁嗅,還有演示新增边涕、查詢晤碘、修改褂微、刪除功能的需要,Main里面的代碼稍微多了一點(diǎn)點(diǎn)园爷。
現(xiàn)在可以按下“F5”宠蚂,運(yùn)行演示程序,出現(xiàn)如下圖結(jié)果童社。

藏在代碼后面求厕,EF幫助我們做了哪一些工作,我們將在下一篇文章中闡述扰楼。

`

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呀癣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弦赖,更是在濱河造成了極大的恐慌项栏,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹬竖,死亡現(xiàn)場離奇詭異沼沈,居然都是意外死亡流酬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門列另,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芽腾,“玉大人,你說我怎么就攤上這事页衙√希” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵店乐,是天一觀的道長惭载。 經(jīng)常有香客問我,道長响巢,這世上最難降的妖魔是什么描滔? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮踪古,結(jié)果婚禮上含长,老公的妹妹穿的比我還像新娘。我一直安慰自己伏穆,他們只是感情好拘泞,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枕扫,像睡著了一般陪腌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上烟瞧,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天诗鸭,我揣著相機(jī)與錄音,去河邊找鬼参滴。 笑死强岸,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的砾赔。 我是一名探鬼主播蝌箍,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼暴心!你這毒婦竟也來了妓盲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤专普,失蹤者是張志新(化名)和其女友劉穎悯衬,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脆诉,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甚亭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年贷币,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亏狰。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡役纹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出暇唾,到底是詐尸還是另有隱情促脉,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布策州,位于F島的核電站瘸味,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏够挂。R本人自食惡果不足惜旁仿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孽糖。 院中可真熱鬧枯冈,春花似錦、人聲如沸办悟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽病蛉。三九已至炫加,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铺然,已是汗流浹背俗孝。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留探熔,地道東北人驹针。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓烘挫,卻偏偏與公主長得像诀艰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子饮六,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容