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

在实体类中使用显式接口实现时,EF Core不会在表中创建列

显式接口实现是一种在实现类中实现接口成员的方式,它允许一个类实现多个相同签名的接口成员。在 EF Core 中,如果我们在实体类中使用显式接口实现,EF Core 不会将接口成员映射为表中的列。

这是因为 EF Core 只会将实体类的公共属性和字段映射为表中的列。而显式接口实现通常是将接口成员实现为私有成员,因此 EF Core 无法将其映射为列。

例如,我们有以下的接口和实体类:

代码语言:txt
复制
public interface IEntity
{
    int Id { get; set; }
    string Name { get; set; }
}

public class Person : IEntity
{
    // 显式接口实现
    int IEntity.Id { get; set; }
    string IEntity.Name { get; set; }

    // 实体类的公共属性
    public int Age { get; set; }
}

在上面的代码中,Person 类实现了 IEntity 接口,并使用显式接口实现的方式实现了接口的成员。在数据库中,EF Core 只会创建一个包含 Age 属性的列,而不会创建 IdName 列。

需要注意的是,虽然 EF Core 不会自动将显式接口实现映射为列,但我们仍然可以通过其他方式在数据库中存储接口成员的值。例如,我们可以在实体类中添加与接口成员对应的公共属性,然后在实现类中通过显式接口实现来访问这些属性。

总结起来,当使用显式接口实现时,EF Core 不会在表中创建列,因为它只映射实体类的公共属性和字段。如果我们需要将接口成员映射为列,可以考虑其他的映射方式或者通过其他属性来实现。

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

相关·内容

Entity Framework Core 2.0 新特性

(本文的英文原文地址:这里) 1.实体方面的新内容     1.1拆分      现在可以将多个实体类型映射到将要共享主键的同一个,并且每一行将对应于两个或多个实体。    ...使用所属类型与EF6使用复杂类型类似,(PS:这里解释一下EF6的复杂类型,复杂类型是允许实体组织标量属性的实体类型的非标量属性。像实体一样,复杂类型由标量属性或其他复杂类型属性组成。)...,EF Core迁移不会对其进行创建 2.性能提升方面 2.1DbContext连接池 ASP.NET Core程序我们使用EF Core一般都是将自定义DbContext类型注册到依赖注入系统,...这在思想概念上类似于ADO.NET连接池的运作方式,并且能节省DbContext实例初始化成本。 2.2编译查询 这是一个可选的性能功能,主要是为了大规模场景中提供优势。...编译的查询API已经以前版本的EF和LINQ to SQL可用,以允许应用程序缓存查询的翻译,以便它们只能被计算一次并执行多次。

3.9K90

Entity Framework Core 2.0 新特性

ef core 2.0 ,我们将自定义的DbContext类型注册到DbContextPool服务,可让该数据库上下文类型的实例重复使用。...六.拆分(Table splitting)   现在可以将两个或多个实体类型映射到同一,其中主键将被共享,每一行对应两个或多个实体。   ...按照惯例,将为所属类型创建一个影子主键,它将通过使用拆分映射到与所有者相同的。...目前只支持标量函数 EF Core迁移将不负责创建它,您必须在数据库创建映射函数 九.code first 实体配置   EF6可以通过 EntityTypeConfiguraiton 封装特定实体类型的配置代码...,EF Core2.0,这个特性回来了(EF Core 之前的 core版本不支持)。

1.9K50
  • EntityFramework Core 学习扫盲

    包含和排除实体类型 将实体Context映射到数据库有多种方式: 使用DbSet定义属性。 OnModelCreating方法中使用Fluent Api配置。...假如导航属性存在对其他实体的引用,那么即便不把被引用实体配置为引用,被引用实体也可以隐地映射到数据库。 如以下代码所示。...计算 计算指的是的数据由数据库计算生成,EF CORE层面,我们只需要定义计算规则即可。目前EF CORE 1.1 版本,暂不支持使用Data Annotations方式定义。...备用键 备用键之前的小节已经提过,使用以下代码配置的将自动设置为唯一标识。...继承 继承通常被用来控制实体类接口如何映射到数据库结构EF CORE 当前版本,TPC和TPT暂不被支持,TPH是默认且唯一的继承方式。

    9.6K90

    03-EF Core笔记之查询数据

    EF Core使用Linq进行数据查询。...Core有三种常见模型来加载关联数据: 预先加载:表示从数据库中加载关联数据,作为初始查询的一部分 加载:表示稍后从数据库加载关联数据 延迟加载:表示访问关联数据时,再从数据库中加载关联数据...加载 通过 DbContext.Entry(...) API 加载导航属性。...好的一点是,EF Core设计时就替我们考虑了如何防御SQL注入攻击,因此当我们使用FromSql方法时,参数如果有使用到拼接字符串的情况,则会自动为我们生成SQL查询参数,例如: var user...执行查询时,EF Core会检查我们的sql语句是否支持拼接,如果支持的情况下,则会将linq过滤语句拼接为sql一并发送到数据库进行查询。 跟踪 原始SQL的跟踪与Linq查询的跟踪方式一致。

    2.5K20

    张高兴的 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用

    通过本文你可以学到: 使用 Database First 的方式生成实体类; 熟悉实体类EF Core Attribute; 查询一张的数据; 使用 Docker 拉取镜像。...项目依赖 使用 Scaffold-DbContext 命令生成实体类 手动创建实体类 实体属性 的映射 的映射 主键的映射 导航属性 创建数据库上下文 从数据库查询 准备工作 准备工作包含两部分...手动创建实体类 下面将手动编写两个实体类 Hospital.cs 和 Doctor.cs,以熟悉 EF Core Attribute 是如何将数据库实体类之间建立联系的。...实体属性 每一个实体类都有一组属性,EF Core 会将实体属性映射到数据库的映射 对数据库进行映射,使用 Table() Attribute。...[Table("hospital")] public class Hospital { } 的映射 对数据库进行映射,使用 Column() Attribute。

    2.5K10

    CSharpEntityFramework与CodeFirst实践

    回到项目中,接下来我们创建Book实体类,为其添加Id、Title以及Price属性,同时使用特性属性以及类名上标注该实体类在数据库的体现方式: namespace CodeFirstDemo {...Table特性来名该实体类Book将对应数据库的book(不需要此刻已经有Book),使用[Required]特性来表明字段是否可为空,此外,由于EF默认将Id属性视为主键,所以无需使用[Key...正在应用迁移: [201809131330306_InitDb]。 正在应用迁移: 201809131330306_InitDb。...删除 为了证明EF再删除的时候,并不会影响其他的,我再次利用创建了一个新的实体类EBook并更新DbContext以及进行EF迁移功能: namespace CodeFirstDemo {...正在应用迁移: [201809131406177_AddNewProp]。 正在应用迁移: 201809131406177_AddNewProp。

    27310

    C# 数据操作系列 - 6 EF Core 配置映射关系

    前言 《C# 数据操作系列 - 5. EF Core 入门》篇,我们简单的通过两个类演示了一下EF增删改查等功能。细心的小伙伴可能看了生成的DDL SQL 语句,在里面发现了些端倪。...映射规则 通过简单的示例,我们可以看到EF的映射规则是什么。基于约定由于配置的原则,EF实体类当做是一个单数形式的类型描述,把认为是实体类的集合,所以名为类名的复数形式。...对于其他属性,EF会自动按照同名的形式映射到数据。 对于外键,如果在类里添加了引用类型,而这个引用类型也EF的上下文中,EF会把这种属性称为导航属性。...[Column] 表示,用来设置一些的基本参数,比如类型、名称 [Required] 表示该插入数据库时不能为空 使用注解进行相关配置相当简单,但是这样不可避免的需要修改模型类而且需要引入额外的命名空间...总结 在这一篇领着大家看了一下EF Core对于映射关系这一部分的内容,我留下了外键相关的FluentAPI介绍,我打算在下一篇介绍。因为这部分的内容比较麻烦,而且使用率也相当高。

    2.8K21

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

    2.4.3 EF Core -- 基础与配置 连接字符串 异步编程 日志 DbContext池 类和配置 属性和配置 并发token 索引 Entity Framework Core:https:/...异步操作对于丰富的客户端应用程序中保持响应 UI 非常重要,并且还可以增加 web 应用程序的吞吐量,在这些应用程序,它们可释放线程以处理 web 应用程序的其他请求 var blog = new...避免维护状态的应用程序中使用上下文池。 例如,不应在请求之间共享的上下文中的私有字段。 将上下文实例添加到池中之前,EF Core 仅重置它知道的状态。...类和配置 实体类型:https://docs.microsoft.com/zh-cn/ef/core/modeling/entity-types?...tabs=data-annotations 模型包含类型 class MyContext : DbContext { // 对应一张(推荐) public DbSet

    75811

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 基础与配置)--学习笔记

    2.4.3 EF Core -- 基础与配置 连接字符串 异步编程 日志 DbContext池 类和配置 属性和配置 并发token 索引 Entity Framework Core:https:/...异步操作对于丰富的客户端应用程序中保持响应 UI 非常重要,并且还可以增加 web 应用程序的吞吐量,在这些应用程序,它们可释放线程以处理 web 应用程序的其他请求 var blog = new...避免维护状态的应用程序中使用上下文池。例如,不应在请求之间共享的上下文中的私有字段。将上下文实例添加到池中之前,EF Core 仅重置它知道的状态。...类和配置 实体类型:https://docs.microsoft.com/zh-cn/ef/core/modeling/entity-types?...tabs=data-annotations 模型包含类型 class MyContext : DbContext { // 对应一张(推荐) public DbSet

    95720

    EF Core 入门

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

    2.4K10

    Entity Framework 约定

    二、关系约定 在数据库,我们可以通过多张的关联查询出数据,这多张之间的关联,就是他们的关系。同样,也可以模型定义这样的关系。...EF定义关系要使用到导航属性,通过导航属性可以定义多个模型之间的关系。大部分情况下我们会将导航属性和外键属性结合在一起使用。...简单的说就是:一个复杂类型作为已存在对象的属性,EF会将复杂类型的类映射到已存在的,已存在的包将包含这些,而不是将复杂类型映射成另外单独的一张。...自定义约定包含一个约定接口 IConvention,IConceptualModelConvention 是概念模型接口模型创建后被调用,IStoreModelConvention 接口为存储模型接口...,模型创建之后用于操作对模型的存储,***自定义类约定***都必须在 OnModelCreating 方法配置,例如我们要将模型类型为DateTime的属性映射为datetime2,可进行如下配置

    1.3K10

    2022年了有哪些值得推荐的.NET ORM框架?

    StoredProcedureEFCore-用于执行存储过程的 Entity Framework Core 扩展。 ShardingCore - EF Core分库读写分离的扩展。...主要特点: 支持 CodeFirst 模式,即便使用 Access 数据库也支持数据迁移; 支持 DbFirst 模式,支持从数据库导入实体类,或使用实体类生成工具生成实体类; 支持 深入的类型映射,比如...PetaPoco 是首选的微 ORM,也是任何体面的开发人员工具包必不可少的实用程序。 主要特点: 与Dapper一样,它很快,因为它使用动态方法生成 (MSIL) 将值分配给属性。...它了解您的架构以创建最佳的编译表达式 AOT。 内存高效- 它提取并缓存您的对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程重用它们。...这种方法更容易推理您的数据访问,从而清楚地知道什么 SQL 什么时间执行,同时减轻意外行为、隐 N+1 查询和重对象关系映射器 (ORM) 普遍存在的泄漏数据访问。

    5.9K11

    UnitOfWork知多少

    从代码我们可以看出仅做了一次保存,新增加的User、Customer、Address对象都成功持久化到了内存数据库。从而证明EF Core是实现了Uow模式的。...但这似乎引入了另外一个问题,因为仓储是管理单一聚合的,每次做增删改时都的提交了更改(调用了SaveChanges),处理多个聚合时,就无法利用DbContext进行批量提交了。那该如何是好?...、Update、Delete方法保存调用_dbContext.SaveChanges();。...EFEF Core本身已经实现了Uow模式,所以现时,我们应避免不必要的抽象来降低系统的复杂度。 最后,重申一下: Uow模式是用来管理仓储处理事务的,仓储用来解耦的(领域层与基础设施层)。...最后附上使用.Net CoreEF Core基于DDD分层思想实现的源码: GitHub--UnitOfWork

    2.4K81

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

    ORM 映射器(Mapper): 负责将对象映射到数据库,以及将对象的属性映射到。 ORM 框架的主要优点包括: 提高了开发效率,因为开发者可以用熟悉的面向对象的方式来操作数据库。...Code First 的主要特点包括: 基于代码的设计: 开发者使用 .NET 类和属性来定义数据库模型,这些类和属性代表了数据库。...Code First 通常与以下两种模式结合使用: 实体框架模型(Entity Framework Model): 开发者创建实体类,这些类通过 Fluent API 或数据注释与数据库进行映射。...EF Core 通过提供事务上下文支持数据库事务。 事务 EF Core 使用涉及以下步骤: 开始事务: DbContext 实例开启一个事务。...此外,EF Core 支持保存点(Savepoint),这是一种事务创建一个可回滚的子事务点的机制。如果操作失败,你可以回滚到最近创建的保存点,而不是回滚整个事务。

    44600

    2022年了有哪些值得推荐的.NET ORM框架?

    StoredProcedureEFCore-用于执行存储过程的 Entity Framework Core 扩展。 ShardingCore - EF Core分库读写分离的扩展。...主要特点: 支持 CodeFirst 模式,即便使用 Access 数据库也支持数据迁移; 支持 DbFirst 模式,支持从数据库导入实体类,或使用实体类生成工具生成实体类; 支持 深入的类型映射...PetaPoco 是首选的微 ORM,也是任何体面的开发人员工具包必不可少的实用程序。 主要特点: 与Dapper一样,它很快,因为它使用动态方法生成 (MSIL) 将值分配给属性。...它了解您的架构以创建最佳的编译表达式 AOT。 内存高效- 它提取并缓存您的对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程重用它们。...这种方法更容易推理您的数据访问,从而清楚地知道什么 SQL 什么时间执行,同时减轻意外行为、隐 N+1 查询和重对象关系映射器 (ORM) 普遍存在的泄漏数据访问。

    3.8K20
    领券