热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

ADO.NETEntityFramework如何:通过每种类型一个表继承以定义模型(实体框架)

本主题介绍如何手动创建具有每种类型一个表继承层次结构的概念模型。每种类型一个表继承使用数据库中单独的表为继承层次结构中的每种类型维护非继承属性和键属性的数据。说明:建

本主题介绍如何手动创建具有每种类型一个表继承层次结构的概念模型。每种类型一个表继承使用数据库中单独的表为继承层次结构中的每种类型维护非继承属性和键属性的数据。

说明说明:

建议使用 ADO.NET 实体数据模型工具来定义具有每种类型一个表继承的模型。 有关更多信息,请参见 演练:映射继承 - 每种类型一个表(实体数据模型工具)。

以下是手动定义一个具有每种类型一个表继承的模型的基本步骤:

  1. 在将包含基实体类型和派生类型的概念模型中定义一个实体集。有关更多信息,请参见 EntitySet 元素 (CSDL)。

  2. 通过使用 BaseType 特性在概念模型中定义派生实体类型,并且只定义派生类型上的非继承属性。 有关更多信息,请参见 EntityType 元素 (CSDL)。

  3. 在以映射规范语言 (MSL) 表示的 EntitySetMapping 元素中映射基实体类型和派生类型。 将继承的属性映射到表列(如果适用)。设置 TypeName 特性的值时使用 IsTypeOf 语法。 有关更多信息,请参见 EntitySetMapping 元素 (MSL)。

下面的示例假定您已经安装了 School 示例数据库,并且您已经手动将项目配置为使用实体框架。有关更多信息,请参见 创建 School 示例数据库(实体框架快速入门)和 配置实体框架(实体框架任务)。

创建存储模型

  • 将下面的 XML 文件添加到您的项目中并将其命名为 School.ssdl

创建概念模型

  • 将下面的 XML 文件添加到您的项目中并将其命名为 School.csdl注意下列事项:

    • 为三个实体类型 CourseOnlineCourseOnsiteCourse 仅定义一个实体集 Courses

    • OnlineCourseOnsiteCourse 实体类型是派生类型,这些派生类型由各自定义中的 BaseType 特性指示。

    • OnlineCourseOnsiteCourse 实体类型定义的属性只是非继承属性。

定义概念模型与存储模型之间的映射

  • 将下面的 XML 文件添加到您的项目中并将其命名为 School.msl注意下列事项:

    • 在同一个 EntitySetMapping 元素中定义 CourseOnlineCourseOnsiteCourse 实体类型的映射。

    • OnlineCourseOnsiteCourse 的继承的 CourseID 属性将映射到基础数据库表中的对应列。

    • 对于每个实体类型映射, IsTypeOf 语法用于指示所映射的实体类型。

请参见

任务

如何:通过每个层次结构一个表继承以定义模型(实体框架)

其他资源

CSDL、SSDL 和 MSL 规范
实体数据模型:继承
定义高级数据模型(实体框架任务)

转载于:https://www.cnblogs.com/bmate/archive/2010/12/29/1920953.html


推荐阅读
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • Windows 系统下 MySQL 8.0.11 的安装与配置
    本文详细介绍了在 Windows 操作系统中安装和配置 MySQL 8.0.11 的步骤,包括环境准备、安装过程以及后续配置,帮助用户顺利完成数据库的部署。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
author-avatar
手机用户2502923903
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有