EntityFramwork(2Database First) 源地址https://msdn.microsoft.com/zh-cn/data/jj193542

时间:2015-04-11 20:44:34   收藏:0   阅读:313

必备条件

要完成本演练,需要安装 Visual Studio 2010 Visual Studio 2012

如果使用的是 Visual Studio 2010,还需要安装?NuGet

? ?

1.创建现有数据库

通常情况,是面向一个已创建的现有数据库,但在本演练中,我们需要创建一个数据库进行访问。

Visual Studio 安装的数据库服务器根据所安装的 Visual Studio 的版本而有所不同:

? ?

我们继续生成数据库。

CREATE?TABLE?[dbo].[Blogs]?(?
????[BlogId]?INT?IDENTITY?(
1,?1)?NOT?NULL,?
????[Name]?NVARCHAR?(
200)?NULL,?
????[Url]??NVARCHAR?(
200)?NULL,?
????CONSTRAINT?[PK_dbo.Blogs]?PRIMARY?KEY?CLUSTERED?([BlogId]?ASC)?
);?
?
CREATE?TABLE?[dbo].[Posts]?(?
????[PostId]?INT?IDENTITY?(
1,?1)?NOT?NULL,?
????[Title]?NVARCHAR?(
200)?NULL,?
????[Content]?NTEXT?NULL,?
????[BlogId]?INT?NOT?NULL,?
????CONSTRAINT?[PK_dbo.Posts]?PRIMARY?KEY?CLUSTERED?([PostId]?ASC),?
????CONSTRAINT?[FK_dbo.Posts_dbo.Blogs_BlogId]?FOREIGN?KEY?([BlogId])?REFERENCES?[dbo].[Blogs]?([BlogId])?ON?DELETE?CASCADE?
);

2.创建应用程序

为简单起见,我们将生成一个基本控制台应用程序,它使用 Database First 执行数据访问:

? ?

3.对模型进行反向工程处理

我们使用 Visual Studio 中的实体框架设计器来创建模型。

? ?

反向工程处理完成后,新模型将添加到项目中并在实体框架设计器中打开以便查看。项目中还添加了一个 App.config 文件,其中含有数据库的连接详细信息。

技术分享

Visual Studio 2010 中的其他步骤

如果用的是 Visual Studio 2010,则需要执行一些其他步骤升级到实体框架的最新版本。升级十分重要,因为升级后才能访问经过改进的 API 图面以及最新的 Bug 修复,改进的 API 图面使用起来更为方便。

首先,需要从 NuGet 获取实体框架的最新版本。

接下来,需要交换模型,生成利用实体框架的早期版本中引入的 DbContext API 的代码。

? ?

4.读写数据

我们已有了模型,现在可以使用模型来访问一些数据。用于访问数据的类是基于 EDMX 文件自动生成的。

此屏幕快照来自 Visual Studio 2012,如果使用的是 Visual Studio 2010,则 BloggingModel.tt BloggingModel.Context.tt 文件直接位于项目下面,而不是嵌套在 EDMX 文件下面。

技术分享

? ?

实现 program.cs 中的 Main 方法,如下所示。这些代码为上下文创建一个新实例,然后使用该实例插入新博客。之后,它使用 LINQ 查询检索数据库中的所有博客(按标题的字母顺序进行排序)。

class?Program?
{?
????
static?void?Main(string[]?args)?
????{?
????????
using?(var?db?=?new?BloggingContext())?
????????{?
????????????
//?Create?and?save?a?new?Blog?
????????????Console.Write(
"Enter?a?name?for?a?new?Blog:?");?
????????????var?name?=?Console.ReadLine();?
?
????????????var?blog?=?
new?Blog?{?Name?=?name?};?
????????????db.Blogs.Add(blog);?
????????????db.SaveChanges();?
?
????????????
//?Display?all?Blogs?from?the?database?
????????????var?query?=?from?b?
in?db.Blogs?
????????????????????????orderby?b.Name?
????????????????????????select?b;?
?
????????????Console.WriteLine(
"All?blogs?in?the?database:");?
????????????
foreach?(var?item?in?query)?
????????????{?
????????????????Console.WriteLine(item.Name);?
????????????}?
?
????????????Console.WriteLine(
"Press?any?key?to?exit...");?
????????????Console.ReadKey();?
????????}?
????}?
}

现在,可以运行应用程序,对其进行测试。

Enter a name for a new Blog:?ADO.NET Blog
All blogs in the database:
ADO.NET
博客
Press any key to exit...

? ?

5.处理数据库更改

现在,可以对数据库架构进行一些更改,在进行这些更改时,还需要更新模型,从而反映这些更改。

第一步是对数据库架构进行一些更改。我们将向架构添加一个用户表。

CREATE?TABLE?[dbo].[Users]?
(?
????????[Username]?NVARCHAR(
50)?NOT?NULL?PRIMARY?KEY,??
????[DisplayName]?NVARCHAR(MAX)?NULL?
)

在更新架构之后,用这些更改来更新模型。

? ?

模型进行更新,包括映射到我们已添加到数据库的用户表的新 User 实体。

技术分享

原文:http://www.cnblogs.com/ljp-sun/p/4418295.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!