标签:
要完成本演练,需要安装 Visual Studio 2010 或 Visual Studio 2012。
如果使用的是 Visual Studio 2010,还需要安装?NuGet。
? ?
通常情况,是面向一个已创建的现有数据库,但在本演练中,我们需要创建一个数据库进行访问。
随 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?
);
为简单起见,我们将生成一个基本控制台应用程序,它使用 Database First 执行数据访问:
? ?
我们使用 Visual Studio 中的实体框架设计器来创建模型。
? ?
反向工程处理完成后,新模型将添加到项目中并在实体框架设计器中打开以便查看。项目中还添加了一个 App.config 文件,其中含有数据库的连接详细信息。
如果用的是 Visual Studio 2010,则需要执行一些其他步骤升级到实体框架的最新版本。升级十分重要,因为升级后才能访问经过改进的 API 图面以及最新的 Bug 修复,改进的 API 图面使用起来更为方便。
首先,需要从 NuGet 获取实体框架的最新版本。
接下来,需要交换模型,生成利用实体框架的早期版本中引入的 DbContext API 的代码。
? ?
我们已有了模型,现在可以使用模型来访问一些数据。用于访问数据的类是基于 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 |
? ?
现在,可以对数据库架构进行一些更改,在进行这些更改时,还需要更新模型,从而反映这些更改。
第一步是对数据库架构进行一些更改。我们将向架构添加一个用户表。
CREATE?TABLE?[dbo].[Users]?
(?
????????[Username]?NVARCHAR(50)?NOT?NULL?PRIMARY?KEY,??
????[DisplayName]?NVARCHAR(MAX)?NULL?
)
在更新架构之后,用这些更改来更新模型。
? ?
模型进行更新,包括映射到我们已添加到数据库的用户表的新 User 实体。
EntityFramwork(2Database First) 源地址https://msdn.microsoft.com/zh-cn/data/jj193542
标签:
原文地址:http://www.cnblogs.com/ljp-sun/p/4418295.html