简介
Entity Framework(以下简称EF) 是微软推出的一个ORM框架,按照微软一贯的传统,需要等到3.0版本,软件才会好用,我第一次看到EF的时候,当时的EF只支持从数据库生成复杂无比的代码,所以一直没有将EF作为生产工具使用。
目前的EF支持三种开发模式
- 数据库优先(Database First)**
传统的开发模式,先设计数据库,再从数据库生成对应的数据存取代码。 - 模型优先(Model First)
使用可视化模型设计工具,构建数据模型。 - 代码优先(Code First)
这是EF拥抱DDD开发,支持POCO(Plain Old CLR Object)类型的开发模式。
也将是我们接下来要介绍的开发模式。
工作环境
Visual Studio 2013/2015
任务描述
使用Microsoft Entity Framework 6.0(以下简称EF) Code First编程模式,制作一个可运行的极简代码项目。
- 订单数据表 SaleOrder
- 基本的CRUD测试
准备工作
- 创建一个控制台应用项目 EFDemo.T1
- 使用Nuget Package Manager添加引用
2.1 右键解决方案,选择菜单"Enable Nuget Package Restore"
如图提示,表示Nuget已成功启用。
2.2 管理解决方案的Nuget程序包
打开Nuget管理工具,联机栏目中,我们看到Entity Framework 排在第二位,点击“安装”即可。如果你没有看到Entity Framework,可以在右侧“搜索联机(Ctrl+E)”处键入"Entity Framework"进行搜索。
书写代码
- 创建一个实体类SaleOrder
Public Class SaleOrder
Public Property Id() As Integer
Public Property Name() As String
Public Property Amount As Nullable(Of Decimal)
End Class
- 创建数据库上下文 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("删除前共有数据记录{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("删除后共有数据记录{0}行。", db.SaleOrder.Count))
End Using
Console.WriteLine("按任意键退出。")
Console.ReadKey()
End Sub
总结
实体:三个字段,五行代码
数据: 一个数据表,三行代码
这就是EF可以开始工作的全部代码。
考虑到需要一些提示,还有演示新增、查询、修改、删除功能的需要,Main里面的代码稍微多了一点点。
现在可以按下“F5”,运行演示程序,出现如下图结果。
藏在代码后面,EF帮助我们做了哪一些工作,我们将在下一篇文章中阐述。
`
网友评论