教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 初中教育 >

使用Entity. Framework编程(2)

来源:网络收集 时间:2025-09-17
导读: 使用Entity. Framework编程(2) 第二章:Code First概览 如果你使用第一、二版的EF框架工作过,你会回想起书中的业务案例:Break Away Geek Adventures, 简称BAGA。BAGA共享了很多像我们这样的奇客的冒险旅行。但是几年过去了,业务又在增长,到了需要更新应

使用Entity. Framework编程(2) 第二章:Code First概览

如果你使用第一、二版的EF框架工作过,你会回想起书中的业务案例:Break Away Geek Adventures, 简称BAGA。BAGA共享了很多像我们这样的奇客的冒险旅行。但是几年过去了,业务又在增长,到了需要更新应用程序的时候了。既然BAGA为软件奇客服务,他们不能拒绝尝试使用新技术,如EF的Code First.

在这一章里,我们从一个小例子来开始学习Code First的默认行为,然后逐步向这个例子里添加影响这种行为的信息。

我们将开始于BAGA业务域的一个小片断:包括我们旅行的目的地和我们的奇客们在这次旅行的住所。

Code First的美妙在于域类的定义代码与EF数据模型所依赖的代码是一样的。我们只需要开始于代码就可以了,例2-1,分别展示了Destination类和Loadging类。在开始的案例中,我们要保持类的简洁;这些类包含了一些自动属性,并没有什么逻辑。

Example 2-1. The domain model

public class Destination

{

}

public class Lodging

{

} public int LodgingId { get; set; } public string Name { get; set; } public string Owner { get; set; } public bool IsResort { get; set; } public Destination Destination { get; set; } public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; set; } public string Description { get; set; } public byte[] Photo { get; set; } public List<Lodging> Lodgings { get; set; }

Destination类描述了一个特定的BAGA旅行的目的地,对于任何给定的目的地,从Aspen到Zimbabwe,BAGA都会安排各种住所,从床位到五星级酒店,以便到时暂住。因此目的地对象要包含一个或多个居所,使用了List<lodging>来表达;

EF域类介绍

本质上,这些类与EF和Code First无关。这里只简单描述了域的一部分。

为了让EF框架能够找到这些类,需要使用EF框架的context来服务、管理和持久化数据至数据库。EF框架有两种context工具可供选择,一个是ObjectContext,这一工具从EF第一次发布就一直是EF框架的一部分,而随着EF4.1的发布,伴随Code First推出轻量级的

DbContext。两种工具都可选用,但更通用(推荐)的是使用新的DbContext,也就是我们马上就要使用的。本书第7章,你将会学习如何使用ObjectContex进行Code First.

我们的BreakAwayContext类,就继承自DbContext,可以获得DbContext的所有功能。除此以外,还需要返回Destination类和Lodging类的可查询数据集DbSets,以暴露类中的属性

Example 2-2 The BreakAwayContext class

public class BreakAwayContext : DbContext

{

public DbSet<Destination> Destinations { get; set; }

public DbSet<Lodging> Lodgings { get; set; }

}

这个小小的类就代表了你在应用程序中使用的完整的数据层.感谢DbContext,你可查询,修改,跟踪和保存目的地和住所数据.下面创建一个控制台程序使用这个数据层来做一些工作,你会看到我们并非言过其实.

将片断放入程序中

为了查看有关行为,下面将带您实现一个小的VS解决方案,在此你可将这些类放进去,然后创建一个简单的控制台程序来测试你的新数据层.确保你已经开始了正确的路径,本示例将把应用程序的各个层组织在不同的项目中.

1.在VS中创建一个新的解决方案;

2.添加一个类库项目到解决方案,命名为Model.

3.在这个项目里,添加一个新的类命名为Destination.

4.修改Destination类以使其与例2-3一致:

Example 2-3. The Destination class

using System.Collections.Generic;

namespace Model

{

public class Destination

{

public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; set; } public string Description { get; set; } public byte[] Photo { get; set; } public List<Lodging> Lodgings { get; set; }

}

}

5.添加另一个类,命名为Lodging,使其与例2-4一致.

Example2-4.The Lodging class

namespace Model

{

public class Lodging

{

public int LodgingId { get; set; } public string Name { get; set; } public string Owner { get; set; } public bool IsResort { get; set; } public Destination Destination { get; set; }

}

}

这就是Model项目的内容.现在,转到数据层,因为域类尚未连接到EF框架上,我们数据层将完全依赖于EF框架.

小贴士:将NuGet安装到VS中就可以将类库方便地添加到项目中.在第1章您已学到EF可以通过NuGet获取.为了完成如下步骤,你需要为VS安装NuGet扩展.为了安装NuGet,选择工具

--扩展管理….会出现扩展管理对话框,然后查找NuGet.选择NuGet扩展管理包,点击下载按钮,按照提示安装.

一旦安装完成,您就可以以一种新的方式使用VS了.你可通过VS的工具菜单--添加类库来添加所需的类库,另一种方式是使用上下文菜单来添加,方法是在解决方案的指定项目上点击右键.在下面的操作步骤中,我们使用后者

1.添加另一个类库项目,命名为DataAcess;

2.在项目资源管理器中右键单击新建立的项目选择"Add Livray Package Reference"

3.在弹出的对话框中,选择Online,并搜索Entity Framework;

4.在EF安装包上点击安装按钮,这将把Code First的运行时组件(EntityFramework.dll)添加到你的项目中;

5.右键单击新的项目并选择添加引用;

6.选择项目选项卡将Model proect加入.这将会使context能够访问刚刚在Model Project上创建的域类;

7.添加一个新类,BreakAwayContext到项目中;

8.配置这个新类如代码2-5;

Example 2-5. The BreakAwayContext class

using System.Data.Entity;

using Model;

namespace DataAccess

{

public class BreakAwayContext : DbContext

{

public DbSet<Destination> Destinations { get; set; } public DbSet<Lodging> Lodgings { get; set; }

}

}

注意类顶部的using语句.一个是System.Data.Entity命名空间.这个命名空间使得你可以访问DbContext和DbSet类;这可能有些令人困惑,命名空间为EntityFramework.dll的程序集是 EntityFramework.dll,而不是System.Data.Entity.dll。System.Data.Entity.dll包含了EF框架的核心,已经是.Net框架的一部分.

现在你的数据访问层已经建好了.可以测试你的数据访问层了.

请等一下,我们还没有告诉数据访问层数据库在哪.还没有连接字符串,没有配置文件,没有关联的数据库.我们要在此利用Code First的第一个功能,数据库初始化.Code First有一系列的步骤来找到数据库并且初始化它.我们现在先使用默认行为,在后面第6章,将会学到更多关于数据库初始化的知识。当然,也可以开始于一个现存的数据库,只是我们现在不这么做。

1.添加一个新的控制台应用程序项目到解决方案,命名为BreakAwayConsole.

2.右键单 …… 此处隐藏:4063字,全部文档内容请下载后查看。喜欢就下载吧 ……

使用Entity. Framework编程(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/46797.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)