以往,如果在程序中需要对数据库及其内容进行操作,我们都需要手动去写CURD的代码,很累,一大堆重复代码写的心情不爽。直到某一天发现了Object-Relational Mapping(对象关系映射,简称ORM)框架Entity Framework,感谢微软又做了一件给码农减压的事情。
说了这么多,一些人可能对Entity Framework到底能够干什么还不是很清楚, 简单的说就是从此不用再写CURD的代码就可以直接操作数据库了,ORM使类提供自动化CRUD,使开发人员从数据库API和SQL中解放出来,还需要更深入的了解请移步What is Entity Framework。
本篇文章只是一步步的写一个简单的例子来说明到底怎么去用Entity Framework(下文中简称EF)。关于EF的介绍的文章很多先辈们已经写的很清楚了,EF支持三种开发模式,Code First、Database First、Model First。本文将采用Database First的方式描述一个完整的使用实例。
1. 建立数据库。首先打开VS2015(2012以上版本都差不多),View-》Server Explorer,在Server Explorer视图中点击Data Connections右键Add Connection...将弹出如下Add Connection界面。需要配置Server name为:(localdb)\ProjectsV13,然后设置database name为你要建立的数据库的名称,最后点击ok创建数据库完成。其中server name这个值针对不同的localdb版本会不同,要查看你装的是哪个localdb版本只需要点击View-》SQL Server Object Explorer,在弹出的界面中会显示你所安装的localdb版本,找到对应的值即可。
2.建立数据库表。第1步我们已经建立了localdb数据库,现在需要定义我们要使用的数据库表。展开新建的数据库,右键Tables,选择Add new table,然后会出现表格设计界面。我们可以手动设置表格的列名称和类型,完了之后需要在T-SQL里面把表名称给修改成我们定义的表名称,因为默认的表名是Table。完整的T-SQL代码如下,可以对照一下。
CREATE TABLE [dbo].[User]
(
[Id] INT NOT NULL PRIMARY KEY,
[UserName] VARCHAR(50) NULL,
[Age] INT NULL
)
然后点击左上角的Update,稍等一会点击Update Database。表格创建完成了,数据库下面的Tables目录却要等一会才能刷新出新建的表,可以手动右键refresh一下就立即出来了。然后我们在新建好的表里面随便插入两条数据,后面会需要样例数据。编辑表格数据的方法是右键User(表名),点击Show table data,编辑完成数据,点击左上角刷新按键刷新一下即可。
3.新建项目工程。为了简单,这里建立一个控制台程序。File-》new-》Project...-》Console Project。
4.从数据库自动生成对象文件。Project-》Add new item-》Data-》ADO.Net Entity Data Model,在Name中我们输入EFContext(可随便定义)。然后点击Add。在弹出的界面中选择Code First from database,点击Next。弹出Choose Your Data Connection的界面,点击Next会弹出Choose Your Database Objects and Settings界面,勾选Tables,然后点击Finish。可以看到我们项目中会自动生成两个类文件EFContext.cs和User.cs,并修改了App.config文件。如果你细心会发现在App.config文件中增加了一个ConnectionStrings的配置项内容。
5.现在就可以在程序中操作数据库了。打开Program.cs文件,在Main方法内插入操作代码,完成的文件代码如下所示。
class Program
{
static void Main(string[] args)
{
using (EFContext efContext=new EFContext())
{
var users = efContext.User;
foreach(var user in users)
{
Console.WriteLine("userName {0},Age {1}",user.UserName,user.Age);
}
}
Console.ReadKey();
}
}
是不是神奇的打印出了表格中的内容。可是我们一行sql代码都没有写,这里的示例只是简单的实现了读数据库的内容,而且是先建立数据库模式(Database First),自己去发现更多更神奇的功能吧。
总结:Entity Framework的功能很强大,建议你花一些时间了解下该框架。一篇很好的前辈写的Entity Framework 基础 很值得看看。