簡介
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)備工作
- 創(chuàng)建一個控制臺應(yīng)用項(xiàng)目 EFDemo.T1
- 使用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)行搜索猖败。
書寫代碼
- 創(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
- 創(chuàng)建數(shù)據(jù)庫上下文 DBContext
Public Class DemoContext Inherits DbContext
Public Property SaleOrder As DbSet(Of SaleOrder)
End Class
- 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幫助我們做了哪一些工作,我們將在下一篇文章中闡述扰楼。
`