《Entity Framework 6 Recipes》翻译系列(2) -----第一章 开始使用实体框架之使用介绍...

Visual Studio

  我们在Windows平台上开发应用程序使用的工具主要是Visual Studio.这个集成开发环境已经演化了很多年,从一个简单的C++编辑器和编译器到一个高度集成、支持软件开发整个生命周期的多语言环境。 Visual Studio以及它发布的工具和服务提供了:设计、开发、单元测试、调试、软件配置和管理、构建管理和持续集成等等。很少有开发人员因为还没有使用它而担心(注:作者应该是表达不用担心VS的能力),Visual Studio是一个完整的工具集。Visual Studio在开发应用实体框架的应用程序中起着至关重要的作用。

  Visual Studio为实体框架模型提供了一个集成的设计器,使用它提供的工具,你可以从头创建或者从已存在的数据库创建模型。当然,你可以选择不使用设计器,纯手工来创建实体类型和配置。

  多数情况下,我们拥有一个已经存在的应用和数据库,VisualStudio为我们提供了工具,它可以帮我们把数据库中的表和关系导入到实体框架模型。这非常适合我们,因为很少有人会奢侈选择开发一个崭新的应用程序。多数情况下我们是维护、扩展、改进一个已存在的代码和数据库。

  你可以在计器中创建一个空模型,然后从头开始增加实体类型、类型间的关联以及承继体系到设计器中。 当你创建好模型后,你可以右键设计器,然后从菜单中选择从模型创建数据库。

  如果你的项目团队是以代码为中心的,你可以在不使用设计器的情况下手工创建一系列的领域类、它们之间的关系、上下文对象,然后把这些类和实体框架引擎关联起来。

  一旦创建好模型,改动是经常发生的,因为这对软件开发来说是再自然不过的事。Visual Studio提供了工具帮我们从数据库更新我们的模型,这会使模型和数据库同步。另外,实体框架开发团队还为我们提供了一个名为代码优先迁移(Code First Migrations)工具,它能让数据库保持你模型中最新的修改。

 1-2 使用实体框架

  实体框架紧紧地和Visual Studio集成在一起,为了在你的应用程序中使用实体框架,我们增加一个ADO.NET实体数据框架到你的项目。方法如下:右键你的项目,然后选择 ➤New Item(新建项)。在弹出的对话框中(如图1-4),选择Data(数据)模板下边的ADO.NET Entity Date Model(实体数据模型)模板。然后单击Add(增加)打开数据模型创建导向。

图1-4 向项目中添加实体数据模型

  在第一页向导中有两个选项: start with an existing database (从一个已存的数据创建);start with an empty model(创建一个空模型)。(前者的选项标签实际为“Generate from database”),如图1-5。

图1-5实体数据模型向导给出从已存在的数据库创建和创建空模型选择

   从已存在数据库创建模型是数据库优先(Database-First)方案。从你选择的数据库的表、视图、存储过程,向导会为创建好模型和用于编码的实体类。立马得到的好处就是,你可以在编码中使用实体框架从数据库中的表和列映射到模型中的强类型的实体类。如果数据库中的表间是有关系的,他们会被建模成关联。如果你有一个已经存在的数据库,这是为你的应用创建实体数据模型的一种方式。然而,如果你喜欢使用代码优先(Code-First)方案从一个已存在的数据库创建模型,不用担心,实体框架开发团队已经创建了强有力的工具集(The Entity Framework Power Tools),它通过逆向工程,从一个存在的数据库创建领域实体类,就像你手工敲出来的一样。

   如果你开发一个崭新的应用,没有已存在的数据库,你同样也可以选择实体框架设计器。先创建一个空的模型,然后通过右键创建实体类型、关联、继承。也可以从工具箱中拖拽到设计器中创建它们。一旦建模完成,你就可以右键设计器选择 Generate Database from Model(从模型创建数据库)菜单项。它会产生一个用来创建数据库表、关系的脚本。

  你也可以在Visual Studio中手工创建每一个实体类,然后在DbContext上下文对象中注册它们,这样就能和实体框架服务相衔接。实体框架映射这些实体类到底层的数据库,并在运行时,于内存中自动创建一个模型。

  模型优先(Model-First)或者数据库优先(Database-First),使用实体框架设计器建模。其中的关键点如图1-6所示。在这个模型中,Customer 和 Order拥有一对多关联,每一个Customer可能有多个Orders,但是每个Order只能关联一个Customer.映射详细信息窗口显示一个实体类型的Customer映射到底层数据库中的Customer表。该窗口同时也显示了,Customer表中的列映射到实体类型Customer中的标量属性(Scalar Proerties).记住,在实体框架中,你能使用数据注解或者代码优先(Code-First)中的API特性来创建同样的映射。

图1-6设计器建模中的关键点

  当然,设计器建模中的关键点远不止图1-6所呈现的,本书将覆盖设计器建模的方方面面。某些情况下,会超出设计器的能力范围,本书将展示通过修改底层的.edmx文件来处理这类情况。该文件包含了完整的模型定义,包含概念层、存储逻辑层、映射层。

  所以,无论我们在实体框架中使用数据库优先(Database-First)、模型优先(Model-First)、代码优先(Code-First),我最终都需要使用一个模型。我们获得了较高的生产率,因为在编码时,我们可以像使用应用程序中别的普通对象一样使用模型(实体类),如图1-6所示,在许多情况,你可以像使用应用程序中别的普通对象一样使用Customer和Order对象。

  如果你想插入一个新的customer 和 order到数据库中,你可以创建Customer和Order类型的一个实例,设置它们的属性。然后将其添加到内存中代表模型的上下文对象中。最后调用Savechanges()方法保存。所需要的SQL语句将被自动生成并发送到数据库中实现插入一行。获取数据库中的customers和orders,你可以根据模型中的实体类型和关联,使用LINQ或者实体SQL创建一个查询来实现。

  贯穿本书的技巧将一步一步地向你展示,如何在几乎所有能想到的数据库上建模的场景;如何通过模型实现查询、插入、更新和删除。以及在各种各样的应用程序中如何运用实体框架。

  第一章,到此结束。如果你觉得不错,就请点击右下边的推荐,以便与更多的人分享。

 

 

实体框架交流QQ群:  458326058,欢迎有兴趣的朋友加入一起交流

谢谢大家的持续关注,我的博客地址:http://www.cnblogs.com/VolcanoCloud/

 

转载于:https://www.cnblogs.com/VolcanoCloud/p/4478439.html

一、数据采集层:多源人脸数据获取 该层负责从不同设备 / 渠道采集人脸原始数据,为后续模型训练与识别提供基础样本,核心功能包括: 1. 多设备适配采集 实时摄像头采集: 调用计算机内置摄像头(或外接 USB 摄像头),通过OpenCV的VideoCapture接口实时捕获视频流,支持手动触发 “拍照”(按指定快捷键如Space)或自动定时采集(如每 2 秒采集 1 张),采集时自动框选人脸区域(通过Haar级联分类器初步定位),确保样本聚焦人脸。 支持采集参数配置:可设置采集分辨率(如 640×480、1280×720)、图像格式(JPG/PNG)、单用户采集数量(如默认采集 20 张,确保样本多样性),采集过程中实时显示 “已采集数量 / 目标数量”,避免样本不足。 本地图像 / 视频导入: 支持批量导入本地人脸图像文件(支持 JPG、PNG、BMP 格式),自动过滤非图像文件;导入视频文件(MP4、AVI 格式)时,可按 “固定帧间隔”(如每 10 帧提取 1 张图像)或 “手动选择帧” 提取人脸样本,适用于无实时摄像头场景。 数据集对接: 支持接入公开人脸数据集(如 LFW、ORL),通过预设脚本自动读取数据集目录结构(按 “用户 ID - 样本图像” 分类),快速构建训练样本库,无需手动采集,降低系统开发与测试成本。 2. 采集过程辅助功能 人脸有效性校验:采集时通过OpenCV的Haar级联分类器(或MTCNN轻量级模型)实时检测图像中是否包含人脸,若未检测到人脸(如遮挡、侧脸角度过大),则弹窗提示 “未识别到人脸,请调整姿态”,避免无效样本存入。 样本标签管理:采集时需为每个样本绑定 “用户标签”(如姓名、ID 号),支持手动输入标签或从 Excel 名单批量导入标签(按 “标签 - 采集数量” 对应),采集完成后自动按 “标签 - 序号” 命名文件(如 “张三
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值