首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用EF 4.1 Fluent Code First的每类型表继承

EF 4.1 Fluent Code First是Entity Framework 4.1版本中的一种数据访问技术,它允许开发人员使用代码定义实体类和数据库之间的映射关系,而无需使用传统的XML或注解方式。

在EF 4.1 Fluent Code First中,每类型表继承是一种数据模型设计模式,它允许在数据库中创建多个表,这些表之间通过继承关系进行连接。具体而言,每个继承关系都会在数据库中创建一个单独的表,该表包含了父类和子类的所有属性,并且通过外键关联来表示继承关系。

这种设计模式的优势在于可以更好地组织和管理数据模型,提供了更灵活的数据查询和操作方式。同时,它还可以减少数据库中的冗余数据,并提高数据的一致性和完整性。

应用场景方面,每类型表继承适用于具有继承关系的实体类,例如一个基类是"Person",派生类可以是"Student"和"Teacher",它们都有一些共同的属性(如姓名、年龄),同时也有各自特有的属性(如学号、职称)。通过每类型表继承,可以将这些属性分别存储在不同的表中,便于查询和管理。

在腾讯云的产品中,与EF 4.1 Fluent Code First相关的产品是腾讯云数据库(TencentDB),它是一种高性能、可扩展的云数据库解决方案。腾讯云数据库支持多种数据库引擎(如MySQL、SQL Server等),可以通过代码定义实体类和数据库之间的映射关系,实现每类型表继承的数据模型设计。您可以通过以下链接了解更多关于腾讯云数据库的信息:

腾讯云数据库产品介绍:https://cloud.tencent.com/product/cdb

腾讯云数据库文档:https://cloud.tencent.com/document/product/236

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于EF Code First模式不同建模方式对建产生影响

今天在学EF Code First模式时候,发现几个很有趣问题,问题如下: 1、当编写玩实体后,不指定任何主键约束,EF会找长最像Id,然后设置其为主键,验证代码如下: //User类...结论:发现EF在我没有指定那个是主键情况下,将UserId设为了主键 2、当一个实体中有两个带Id字段,EF会将最像Id设为主键,优先级  Id>UserId>UserId_Id class User...EF将Id设为了主键,UserId和UserId_Id优先级自行验证. 3、关于外键问题,当在实体中加入导航属性,EF生成外键可能会当前实体中其他字段影响.验证代码如下: class PhotoInfo...EF生成了一个User_Id外键属性,关联User 下面修改PhotoInfo实体,代码如下: class PhotoInfo { public Guid Id {...EF不再自动生成外键字段,而是将UserId属性设为了外键. 以上都是我测试出来关于EF默认行为,比较片面,欢迎指正.

95260

Entity Framework Code-First 文章汇集

为了支持以设计为中心开发流程,EF4 还更多地支持以代码为中心 (code-centric) ,我们称为代码优先开发,代码优先开发支持更加优美的开发流程,它允许你: 在不使用设计器或者定义一个 XML...使用Code first这个模式后,你项目中可以说就不再需要.edmx这种系统自动生成Data Model了。...(8)—Code First DataAnnotations(2) EF框架step by step(9)—Code First Fluent API Entity Framework 4.1 Code...之 Code First EF Code-First 自定义映射 Entity Framework Code First使用福音 --- EF Power Tool使用记之一 EFMVC -...Code-First,逐步消除EF之怪异现象 自己来控制EntityFramework4.1 Code-First,强大EF多种加载方式 Entity Framework之犹豫不决 Entity

75860

Entity Framework 约定

约定,类似于接口,是一个规范和规则,使用Code First 定义约定来配置模型和规则。在这里约定只是记本规则,我们可以通过Data Annotaion或者Fluent API来进一步配置模型。...约定形式有如下几种: 类型发现约定 主键约定 关系约定 复杂类型约定 自定义约定 零、类型发现约定 在Code First 中。...当EF检测出外键属性后,会根据外键属性是否为空来判断关系,如果外键可以为空,那么模型之间关系将会配置成可选Code First 不会再关系上配置级联删除。...在Code First 不能推断出模型中主键,并且没有通过Data Annotations 或者Fluent API进行手动配置主键时,该模型将会自动被配置为复杂类型,检测复杂类型时要求该类型没有引用实体类型属性...简单说就是:一个复杂类型作为已存在对象属性,EF会将复杂类型类映射到已存在中,已存在包将包含这些列,而不是将复杂类型映射成另外单独一张

1.3K10

EF 约定介绍

当前环境为EF Code First开发模式中 一、EF默认约定 1、常用约定 (1)、当没有显示指定实体主键时候,EF会默认将长得最像Id属性(且类型为GUID)设为主键 (2)、设计实体时,当一个实体包含一个集合属性...,EF自动生成中间,不需要新增实体来表示. (5)、名默认复数化 2、类型发现约定(Type Discovery) 使用EF开发,往往是以定义一些模型类开始,定义完这些模型类之后,需要让DbContext...知道哪些类型包含在当前模型中,因此,我们需要自定义一个ZdyNameDbContext,并继承DbContext,并在自定义DbContext中暴露需要暴露类型,这样在Code First开发模式中,...(对象间关系是1:0或1:1),或者对象集合(对象间关系是1:*或*:*),Code First 能够根据导航属性定义方式来推断实体间关系.并映射到数据库中....5、复杂类型约定(Complex Types Conventions) 如果Code First无法从类型中推测出主键,也没有通过Data Annotations或者Fluent Api进行注册主键,

1.6K100

Entity Framework CodeFirst尝试

前言 Code First模式我们称之为“代码优先”模式,是从EF4.1开始新建加入功能。...使用Code First模式进行EF开发时开发人员只需要编写对应数据类(其实就是领域模型实现过程),然后自动生成数据库。...但是对于EF处理过程有所差别,例如我们使用Code First就不再需要EDM文件,所有的映射通过“数据注释”和“fluent API”进行映射和配置。...另外需要注意是“Code First”并不代表一定就必须通过数据类来定义模型,事实上也可以通过现有数据库生成数据类。...Code First 简单使用演示 第一步:还是添加一个控制台应用程序,然后在此项目中添加两个简单实体类 using System; using System.Collections.Generic;

65030

【ASP.NET Core 基础知识】--数据库连接--使用Entity Framework Core进行数据库访问

Code First 主要特点包括: 基于代码设计: 开发者使用 .NET 类和属性来定义数据库模型,这些类和属性代表了数据库中和列。...灵活数据注释: 使用 Code First 时,开发者可以在类和属性上使用特定注释来配置映射和数据库行为。...数据操作简化: Code First 简化了数据操作,允许开发者使用 LINQ 或 Fluent API 进行查询和操作。...Code First 通常与以下两种模式结合使用: 实体框架模型(Entity Framework Model): 开发者创建实体类,这些类通过 Fluent API 或数据注释与数据库进行映射。...使用 Code First 可以提高开发效率,并使得数据模型与代码一致性更强。不过,Code First 通常需要开发者对 ORM 原理和数据库设计有一定了解,才能更好地利用其优势。

19800

EF基础知识小记六(使用Code First建模自引用关系,常用于系统菜单、文件目录等有层级之分实体)

日常开发中,经常会碰到一些自引用实体,比如系统菜单、目录实体,这类实体往往自己引用自己,所以我们必须学会使用Code First来建立这一类模型....以下是自引用数据库关系图: ok,下面开始介绍从零创建一个Code First自引用模型. 1、往目标项目中添加EF包,通过NuGet程序包添加 导入相关程序集. 2、创建自引用实体类...{ get; set; } public EF6RecipesContext() : base("name=EF6RecipeEntities")...,从实体类可以看出该实体拥有单个父类型、子类型集合,这里比较特殊是,这里类型和子类型都是自己,也就是自引用.注意:一个没有付类型实体,该实体就是整个继承类型最顶端. 5、编写测试代码:...,则递归深度加1.当一个继承链遍历完毕,继续遍历第二个继承链.

86960

Entity Framework 系统约定配置

前言 Code First之所以能够让开发人员以一种更加高效、灵活方式进行数据操作有一个重要原因在于它约定配置。...在EF中是以一种约定方式进行、列同实体类进行映射,与此同时为了提高最大灵活性EF中可以通过Fluent API和Data Annotations两种方式对映射进行灵活配置。...;如果不存在外键属性则外键关系注册为可选,否则注册为必选项并且此时将设置级联删除关系;如果在从类中有多个导航属性对应同一个数据类那么需要使用fluent API或者Data Annotations进行手动配置...4.当EF按照上述规则在数据类中没有找到主键属性时(或者通过fluent API、Data Annotations没有定义)将认为此类为“复杂类型”。   ...Entity Framework 手动定义约定  EF默认约定不是一成不变,我们可以选择移除和修改它,例如EF默认生成数据时将数据类名复数形式作为名,下面的代码就可以移除这个规则: using

82520

EF Core 入门

EF可以在不使用任何配置前提下,自动解析类与之间映射(具体映射逻辑与我们手写ORM工具类一致或相近)。 自动跟踪更改。...可以延迟加载需要数据,外键引用属性、查询结果等 丰富映射关系,支持一对一,一对多,多对多,甚至继承、单多实例等 可以使用Linq 进行查询 非Core版可以通过数据库生成实体类,两种都可以通过实体类生成...EF可以使用Fluent式配置,也可以使用配置文件进行配置。 说了一大堆Entity Framework优点,那么就让我们开始使用Entity Framework Core吧。...点击创建 Visual Studio Code dotnet new console -o ef_demo cd ef_demo 然后用VS Code打开 ef_demo目录。...这是EF Core保留迁移记录,以便下次使用。 如果项目根目录里没有 blogging.db 这个SQLite文件的话,会自动创建该文件,同时设置好;如果有,但不是SQLite文件,则会报错。

2.4K10

从头编写 asp.net core 2.0 web api 基础框架 (4) EF配置

他们俩可以在数据库中映射成一个;或者在没有继承情况下,数据库中一个可能和多个类有映射关系。...EF Core支持两种模式: Code First:简单理解为 先写C#(Model),然后生成数据库。 Database First:现在数据库中建立,然后生成C#Model。...由于用asp.net core 2.0开发项目基本都是新项目,所以建议使用Code First。 创建 Entity Entity就是普通C#类,就像Dto一样。...生成数据库 因为我们使用Code First,所以如果还没有数据库的话,它应该会自动建立一个数据库。...我只在早期使用Data Annotation,后来一直使用Fluent Api,所以我这里只介绍Fluent Api吧。

2.2K70

EntityFramework Core 学习扫盲

添加实体和映射数据库 使用EF CORE中添加实体,约束属性和关系,最后将其映射到数据库中方式有两种,一种是Data Annotations,另一种是Fluent Api,这两种方式并没有优劣之分,全凭开发者喜好和需求...包含和排除实体类型 将实体在Context中映射到数据库有多种方式: 使用DbSet定义属性。 在OnModelCreating方法中使用Fluent Api配置。...,上述对DateTime类型自动添加操作都是不可行,这是因为EF CORE只支持部分类型自动操作,详见Default Values。...继承 继承通常被用来控制实体类接口如何映射到数据库结构中。在EF CORE 当前版本中,TPC和TPT暂不被支持,TPH是默认且唯一继承方式。...顾名思义,一种继承结构全部映射到一张中,比如Person父类,Student子类和Teacher子类,由EF CORE映射到数据库中时,将会只存在Person类,而Student和Teacher将以列标识形式出现

9.5K90

Entity Framework 4.1 Code-First 学习笔记

------------------------   默认情况下,EF4.1 将类映射到,这是约定,但是有时候,我们需要模型比粒度更细一些。...同样道理,当你获取一个实体时候,即使所有的属性都是 null ,EF4.1 也将会创建一个复杂类型对象。...每个类型一张 TPT: 在继承层次中每个类都分别映射到数据库中一张,彼此之间通过外键关联。...继承层次中所有的类型一张 TPH:对于继承层次中所有类型都映射到一张中,所有的数据都在这张中。...每种实现类型一张 TPC: 有点像其他两个混合,对于每种实现类型映射到一张,抽象类型像 TPH 一样展开到中。 这里我将讨论 TPT 和 TPH,EF 好处是可以混合使用这些方式。

1.6K10

EF Code First 学习笔记:关系

一对多关系 项目中最常用到就是一对多关系了。Code First对一对多关系也有着很好支持。...看看Code First默认会生成怎样数据库 ? 天哪,竟然生成了四个外键。因为有两套类型一样导航属性与引用属性,Code First无法确定它们之间对应关系,就单独为每个属性都创建了一个关系。...我们看看默认生成数据库是怎么样: ? 可以看到,Code First生成了一张中间ActivityTrips,将另外两张主键都作为外键关联到了中间上面。...中间中键命名默认为"[目标类型名称]_[目标类型键名称]". 指定名 如果我们想指定中间名称和键名称,我们可以用Fluent API来配置。...必须使用关系 Fluent API 或数据注释显式配置此关联主体端 因为Code First无法确认哪个是依赖类,必须使用Fluent API或Data Annotations进行显示配置。

74310

EF基础知识小记二

1、EF常用使用场景 (1)、维护一个已经存在数据库,VS提供了工具帮助我们把数据库中和视图等对象导入到实体框架.        ...[数据库=>模型(Database First)] (2)、通过VS提供实体设计器设计模型,然后从头开始添加实体类型类型关联以及继承体系到设计器中.模型创建好后,然后根据模型生成数据库.    ...[模型=>数据库(Model First)] (3)、EF还提供了以代码为中心模型设计方式,通过这种方式我们可以在不使用设计器情况下,手工创建一系列领域类、领域类之间关联以及上下文对象(一般继承自..."代码优先迁移"工具,他能让数据库保持你模型中最新修改. 2、EF工作方式 EF有三种工作方式,一种是Database First,第二种是Model First,第三种是Code First,Database...Code First是一种可以替代edmx(EF模型设计器)方案。从概念上讲,Code First同时支持Database First和Model First两种工作方式.

1.1K70

01-EF Core笔记之创建模型

使用乐观并发控制可提高数据库性能。 按照约定,EF Core不会设置任何并发控制令牌字段,但是我们可以通过Fluent API或数据标注进行配置。...继承 关于继承关系如何在数据库中呈现,目前有三种常见模式: TPH(table-per-hierarchy):一张存放基类和子类所有列,使用discriminator列区分类型,目前EF Core...):基类和子类不在同一个中,子类中包含基类所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,基类和子类数据将存储在同一个中。...查询类型很有用,EF Core不会对它进行跟踪,也不允许新增、修改和删除操作,但是在映射到视图、查询对象、Sql语句查询、只读库等情况下用到。...实体构造函数 EF Core支持实体具有有参构造函数,默认情况下,EF Core使用无参构造函数来实例化实体对象,如果发现实体类型具有有参构造函数,则优先使用有参构造函数。

3K20

EF基础知识小记一

2、集成查询语言LINQ LINQ和EF都出自于微软,都能帮助我们解决失配问题.使用EF等实体框架,我们能在设计器中(Model First)或者代码(Code First)对领域实体进行建模.还能建立实体类之间关系...(Model First) 版本4.1~4.3:实现了"代码优先"方案....(Code First) 之后版本:提供了重大性能改进,并支持了枚举类型值函数,空间数据类型,存储过程一系列改进,以及对asp.net MVC框架深度支持 版本6.0:提供了查询和更新异步支持...,在代码优先(Code First)中,存储过程支持更新,性能改进,以及一系列新特性,本书将聚焦这些新特性 4、模型 实体框架是一个强烈关注建模技术,实体框架创建是实体数据模型(EDM)模型,它允许你在编码时使用类型实体类...在图1-2中,展示了左边数据库不直接映射到右边实体类型(代码中使用

1.6K90
领券