Entity_framework第一篇
来源:互联网 发布:智能语音聊天软件 编辑:程序博客网 时间:2024/06/02 01:00
采用Model-First方式创建数据库
步骤1:创建解决方案
1.运行Vistual Studio 2010 Beta2。
2.在开始页面上点击“new project”。
3.点击C#节点,可以看到已经安装的项目模板。
4.在模板列表中选择ASP.NET Web Application。
5.输入项目名“OrderSystem”,点击“ok”。
这时,VS会在你指定的目录,创建一个解决方案,在该目录的子文件下创建一个网站项目。
步骤2:创建ADO.NET实体对象模型
下面就是创建ADO.NET生实体模型了。对于本程序来说,我们有Users和Addresses两个概念模型。一个user可能有多个address,在模型中要体现这个关系。
1.在OrderSystem上右键,选择Add,点击New Item..(或者使用快捷键Ctrl+Shift+A)。
2.点击C#节点下面的Data子节点。
3.选择ADO.NET Entity Data Model模板。
4.将名字改为“OrderDB.edmx”,点击“Add”按钮。
5.VS将会显示Entity Data Model Wizard.你可以选择模型的来源。
6.选择“Empty Model”,点击“Finish”按钮。
OrderDB.edmx将会添加到你的项目中,同时会显示Entity Framework设计器。
步骤3:创建实体关系
下面将会创建user实体已经它与addresses实体的关系,首先创建user实体。
1.在Entity Framework设计器右键,Add->Entity。
2.你会看到“Add Entity”对话框,输入实体名。需要注意的是,当你输入实体名时,系统会自动产生实体集合的名称(实体名是一个代表一条纪录的类的名称,实体集后则是一个代表一组纪录的类的名称)。
3.VS默认会产生一个名为Id的主键。如果把你不想产生主键,不要选择“Create keyproperty”。本例中需要主键,所以保持选择状态。
4.点击“OK”,UserAccout实体将会添加到实体图表中。
5.接下来是给实体添加属性。这些属性将会映射到数据表中的字段。我们将会添加FirstName和LastName属性。
6.在UserAccount上右击。选择Add->Scalarproperty。
7.将属性名改为FirstName。
8.在属性窗口中,将最大长度设为50,数据类型不用改,默认是String.
9.以同样的方式添加另一个名为LastName的属性,最大长度也设为50。
下面是添加纪录创建时间和更新时间属性。我个人比较倾向于在每个实体中添加创建时间和更新时间属性,这样可以方便以后审查。这两个属性将作为一个复杂类型添加在每个实体中。复杂类型可以让你定义一组属性,满足各种实体的需求。
10.模型浏览窗口中,在Complex Types节点上右击。有时可能要多点击几下才能选中,这可能是VS Beta2的bug。点中Coomplex Types后,在弹出的菜单中选择“Create Complex Type”。
11.将复杂类型的名字改为 AuditFields。
12.右击模型浏览窗口的AuditFileds复杂属性,在弹出的菜单中,选择Add->Scalar Property->DateTime。
13.将名字改为“InsertDate”。
14.用同样的方式添加UpdateDate属性到该复杂类型中。
15.接下来你可以添加该复杂类型到UserAccount实体了,右击UserAccount实体,在弹出的菜单中选择Add->Complex Property。
16.将名字改为“AuditFileds”,数据类型默认为AudtFields。
17.在设计器上右击,弹出的菜单中选择Add->Entity.
18.实体名字改为“Address”,点击“OK”。
19.给Address实体添加Address1,Address2,City,State和Zip属性,所有的属性都为String类型,数据长度分别为:50,50,50,2和5。
20.在属性窗口中,将Address2的Nullable设置为True,其他几个属性都是必填的。
21.同样,给Address实体添加AuditFileds属性。
下面就是建立UserAccount和Address实体之间的关系了。
22.右击UserAccount实体,弹出菜单中选择Add->Association。
23.你会看到在Add Association窗口默认设置好了UserAcccount和Address一对多的关系,如果你要设置不同类型的关系,在Mutiplicity下拉框中选择就可以了,本例中保持默认就可以。点击“OK”后,你会看到Address表多了一个UserAccountId属性。
步骤4:生成数据库
实体已经创建好了,下面是创建数据库了。在VS操作这些非常方便,它将会产生用来创建表,索引和表关系的DLL语句脚本。
1.在设计器上右击,选择Generate Database from Model.将会出现Generate DatabaseWizard窗口。
2.点击“New Connection”按钮。
3.输入Server name,选择Windows Authentication或 SQL ServerAuthentication,这取决于你数据库系统的连接方式。
4.数据库名输入“OrderSystem”,点击“OK”。
5.这时VS会提示你数据库不存在,问你是否新建一个数据库,点击“Yes”。
6.数据库“OrderSystem”创建好后,会返回到Generate DatabaseWizard窗口,点击“Next”。
7.用于创建数据库的DLL语句这时就生成了。
8.点击“Finish”按钮。
9.你会看到项目中多了一个OrderDB.edmx.sql文件,它里面包含用来创建数据库的DLL语句。文件内容如下:
view source
print?
SETQUOTED_IDENTIFIER OFF; SETANSI_NULLS ON; GO USE [OrderSystem] GO IF SCHEMA_ID(N'dbo') ISNULLEXECUTE(N'CREATE SCHEMA [dbo]') GO -- ---------------------------------------------------- Dropping existing FK constraints -- -------------------------------------------------- IF OBJECT_ID(N'[dbo].[FK_UserAccountAddress]', 'F') ISNOTNULL ALTERTABLE[dbo].[Addresses] DROPCONSTRAINT[FK_UserAccountAddress] GO -- -------------------------------------------------- -- Dropping existing tables -- --------------------------------------------------IF OBJECT_ID(N'[dbo].[UserAccounts]', 'U') ISNOTNULL DROPTABLE[dbo].[UserAccounts]; GO IF OBJECT_ID(N'[dbo].[Addresses]', 'U') ISNOTNULL DROPTABLE[dbo].[Addresses];GO -- ---------------------------------------------------- Creating all tables -- ---------------------------------------------------- Creating table 'UserAccounts' CREATETABLE[dbo].[UserAccounts] ( [Id] int NOTNULL, [FirstName] nvarchar(50) NOTNULL, [LastName] nvarchar(50) NOTNULL, [AuditFields_InsertDate] datetime NOTNULL, [AuditFields_UpdateDate] time NOTNULL); GO -- Creating table 'Addresses' CREATETABLE[dbo].[Addresses] ( [Id] int NOTNULL, [Address1] nvarchar(50) NOTNULL, [Address2] nvarchar(50) NULL, [City] nvarchar(50) NOTNULL, [State] nvarchar(2) NOTNULL, [Zip] nvarchar(5) NOTNULL, [AuditFields_InsertDate] datetime NOTNULL, [AuditFields_UpdateDate] time NOTNULL, [UserAccountId] int NOTNULL); GO -- ---------------------------------------------------- Creating all Primary Key Constraints -- -------------------------------------------------- -- Creating primary key on [Id] in table 'UserAccounts' ALTERTABLE[dbo].[UserAccounts] WITHNOCHECK ADDCONSTRAINT[PK_UserAccounts] PRIMARYKEYCLUSTERED ([Id] ASC) ON[PRIMARY] GO -- Creating primary key on [Id] in table 'Addresses' ALTERTABLE[dbo].[Addresses] WITHNOCHECK ADDCONSTRAINT[PK_Addresses] PRIMARYKEYCLUSTERED ([Id] ASC) ON[PRIMARY]GO -- -------------------------------------------------- -- Creating all Foreign Key Constraints-- ---------------------------------------------------- Creating foreign key on [UserAccountId] in table 'Addresses'ALTERTABLE[dbo].[Addresses] WITHNOCHECK ADDCONSTRAINT[FK_UserAccountAddress] FOREIGNKEY([UserAccountId]) REFERENCES[dbo].[UserAccounts] ([Id]) ONDELETENOACTIONONUPDATENOACTIONGO
需要注意的是,现在数据库还没有创建相应的表。要创建这些表,你可以打开OrderDB.edmx.sql文件,右击选择Execute SQL。这时VS会提示你连接到数据库系统,输入相关信息,点击“Connect”,登陆成功后,将会执行这些SQL语句,执行完后数据库的表就创建好了。
小结
以上就是采用Entity Framework的Model First方式创建数据库的的所有步骤了。相比以前的版本,有相当大的改进,现在你只需要设计对象模型,VS会自动帮你生成创建数据表,索引,表关系的语句。
本文是该系列文章的第一篇。以后的文章将会带你逐步深入到Entity Framework4和ASP.NET 4.0的世界。下一篇文章将会向你介绍如何呈现这些数据,以及采用Entity Framework4进行数据的增删改查,希望你能喜欢。
- Entity_framework第一篇
- 第一篇。
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- 第一篇
- XML的几种方式
- 为你的集成需求选择合适的ESB
- Oracle10g体系结构概述
- 集合框架(HashSet,HashMap,HashTable)
- SQL全局临时表防止用户重复登录
- Entity_framework第一篇
- 黑马程序员——C#基础
- 如何将excel中纵向的转换成横向保证格式不变
- Android 程序中常用颜色值
- 神奇的NULL
- 多态
- 黑马程序员_java基础复习之七泛型
- 关于独立游戏开发者营销游戏的建议清单
- windows8安装myeclipse 10.0时出现failed to find a main class in "c:\windows\temp"解决