首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Entity Framework Core创建连接表?

如何使用Entity Framework Core创建连接表?
EN

Stack Overflow用户
提问于 2019-12-15 22:01:25
回答 1查看 1.3K关注 0票数 1

我有以下两个实体/模型:

代码语言:javascript
运行
AI代码解释
复制
public class Achievement
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<User> Users { get; set; }
}

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public ICollection<Achievement> Achievements { get; set; }
}

如何在Entity Framework Core中使用上述两个实体创建连接表?我所做的对于实体框架核心知道关系并为其创建连接表就足够了吗?

我有多对多关系,我希望Entity Framework Core创建一个连接表,如下所示:

代码语言:javascript
运行
AI代码解释
复制
public class UserAchievement 
{
    public int Id { get; set; }
    public int UserId { get; set; }
    public int AchievementId { get; set; }
}
EN

回答 1

Stack Overflow用户

发布于 2019-12-15 22:47:52

我做了更多的研究,发现目前还没有让实体框架核心自动为多对多关系创建连接实体的常规方法,但是in the future this might possible

现在,我们必须创建自己的join实体,并使用Fluent API对其进行配置。

联接实体:

代码语言:javascript
运行
AI代码解释
复制
public class UserAchievement 
{
    public int UserId { get; set; }
    public User User { get; set; }

    public int AchievementId { get; set; }
    public Achievement Achievement { get; set; }
}

其他实体:

代码语言:javascript
运行
AI代码解释
复制
public class Achievement
{
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<UserAchievement> UserAchievements { get; set; }
}

public class User
{
    public int Id { get; set; }
    public string Username { get; set; }
    public ICollection<UserAchievement> UserAchievements { get; set; }
}

然后在DbContext中使用Fluent API进行配置:

代码语言:javascript
运行
AI代码解释
复制
public class DataContext : DbContext
{

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<UserAchievement>().HasKey(ua => new { ua.UserId, ua.AchievementId });
    }

    public DbSet<User> Users { get; set; }
    public DbSet<Achievement> Achievements { get; set; }
    public DbSet<UserAchievement> UserAchievements { get; set; }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59348437

复制
相关文章
Entity Framework Core 2.0 使用入门
一.前言 Entity Framework(后面简称EF)作为微软家的ORM,自然而然从.NET Framework延续到了.NET Core。以前我也嫌弃EF太重而不去使用它,但是EF Core(Entity Framework Core)已经做了很多性能优化,还有一些增加新特性,吸引了我去使用它。关于EF Core 2.0 的新特性请看:http://www.cnblogs.com/stulzq/p/7366044.html 二.控制台程序使用 EF Core(Code First) 1.新建一个.NE
晓晨
2018/06/22
1.2K0
Entity Framework Core 总结
dotnet ef migrations add InitialCreate 创建描述表结构的代码文件
yiyun
2022/04/01
1.3K0
Entity Framework Core 总结
Entity Framework Core 简介
今天来讲解一下 .NET 中的重要成员 Entity Framework Core。Entity Framework Core (以下简称 EF Core),是 EF6 之后微软推出的开源的轻量级可扩展跨平台 ORM 框架。 EF Core 需要和 .NET Core 应用程序一起使用,并且需要 .NET 4.5+ 版本。下面列举一下 EF Core 所支持的项目类型:
喵叔
2020/09/08
2K0
Entity Framework Core 2.0 入门
LearnEf.Console依赖LearnEf.Domains和LearnEf.Data:
solenovex
2018/03/12
3.6K0
Entity Framework Core 2.0 入门
Entity Framework Core 2.0 入门
该文章比较基础, 不多说废话了, 直接切入正题. 该文分以下几点: 创建Model和数据库 使用Model与数据库交互 查询和保存关联数据 EF Core支持情况 EF Core的数据库Provide
solenovex
2018/03/29
3.2K0
Entity Framework Core 2.0 入门
Entity Framework Core-Migrations
使用EF Core Migrations可以使Entity & DbContext的配置与数据库保持一致,Migrations可以非常容易的将创建和更新数据库,当一个项目在开发过程中时,程序员能保证实体更新,因此他们需要运行Migration保证数据库是最新
郑子铭
2023/08/29
3920
Entity Framework Core-Migrations
Entity Framework Core 2.0 新特性
本文介绍了EF Core 2.0的新特性和改进,包括实体、表、查询、性能提升和查询方面的内容。
GuZhenYin
2018/01/04
4K0
Entity Framework Core 2.0 新特性
一.模型级查询过滤器(Model-level query filters)   ef core2.0包含了一个新特性,我们叫他模型级查询过滤器(Model-level query filters)。此特性允许使用Linq查询表达式直接定义在实体类型的元数据模型上。这样的过滤器会自动应用到任何LINQ查询所涉及的那些实体类型,包括间接引用的实体类型(对象引用,导航属性)。这个特性的一些常见应用是: 软删除-定义一个 IsDeleted 属性 多租户-定义一个 TenantId 属性 示例代码: 1 pub
晓晨
2018/06/22
1.9K0
Entity Framework Core导航属性加载问题
今天下午在开发的时候发现EF Core实体模型中的导航属性为 null,经排查既不是没有加 virtual 关键字,也不是外键关系映射错误。
喝茶去
2019/04/16
2K0
Entity Framework Core导航属性加载问题
使用Entity Framework Core访问数据库(Oracle篇)
本篇主要讲一下关于Entity Framework Core访问oracle数据库的采坑。。
GuZhenYin
2019/05/25
2.7K0
Entity Framework Core 2.0 使用代码进行自动迁移
一.前言 我们在使用EF进行开发的时候,肯定会遇到将迁移更新到生产数据库这个问题,前面写了一篇文章介绍了Entity Framework Core 2.0的入门使用,这里面介绍了使用命令生成迁移所需的SQL,然后更新到生产数据库的方法。这里还有另一种方法,就是利用EF Core自身所提供的方法来进行迁移。 二.API说明 这些方法都是DatabaseFacade的扩展方法,我们常使用的DbContext.Database就是DatabaseFacade类型。 GetMigrations 获取所有迁移 ///
晓晨
2018/06/22
1.1K0
Entity Framework Core 实现全局查询过滤
微软在 Entity Framework Core 2+ 中引入了全局查询过滤器,简化了构建多租户应用程序和实体软删除的复杂度。这篇文章我将通过代码的形式对全局过滤查询进行详细的讲解。在讲解前我们先来简单说一下什么是多租户,所谓多租户简单来说是指一个单独的实例可以为多个组织服务。多租户技术为共用的数据中心内如何以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。 接下来我们先来看一个例子,我们假定多个租户使用同一个数据库,同一个Schema,区分租户是根据表中的 tId 区分。我们新建一个项目,在项目中重写 DbContext 上下文里的 OnModelCreating 方法,在这个方法中我们使用 HasQueryFilter 方法进行软删除。
喵叔
2020/09/08
1.1K0
Entity Framework Core如何实现读取Tree树形权限菜单
一、课程介绍 在如今流行的前后分离项目中,前端的菜单都是通过后端的API进行获取进行动态加载的,那么今天阿笨给大家分享一下如何使用Entity Framework Core来实现读取Json格式的Tree树形权限菜单,麻雀虽小五脏俱全,废话不多说,直接上干货。 本次分享课程包含知识点如下: 1)、EF Core开启自动迁移,并批量生成权限菜单数据。 2)、AutoMapper在ASP.NET Core中的简单运用,如何将Entity Model转换为ViewModel。 3)、如何解决在EF Co
跟着阿笨一起玩NET
2021/02/02
1.8K0
Entity Framework Core如何实现读取Tree树形权限菜单
.NET 性能—Entity Framework Core调优
在实际开发过程中,我们遇到性能问题,常见的性能提升方案整体分为硬件、软件、网络三个方面。
郑子铭
2023/08/30
4130
.NET 性能—Entity Framework Core调优
entity framework使用技巧
1、无需先查询数据的修改方法 // 将创建的data实体添加到ObjectContext db.Data.Attach(data); // 手动设置状态为修改 db.ObjectStateManager.ChangeObjectState(data, EntityState.Modified); db.SaveChanges(); 2、嵌套Action(页面) @Html.Action("left","system") // 目录为system/left/ 的action 3、ef查询一行一列信息 var
磊哥
2018/05/08
5730
Entity Framework Core 之数据库迁移
前言 最近打算用.NET Core写一份开源的简易CMS系统,来练练手 所以又去深入研究了一下Entity Framework Core  发现其实有些细节园子里还是很少讲到. 特意整理了几个细节. 正文 1.数据库迁移 先了解一下什么是"数据库迁移",它提供了一种方法,可以逐步将Code First的实体架构更改应用于数据库,以保持数据库与EF Core模型同步,同时保留数据库中的现有数据。 EF Core的数据迁移相对EF6来说改了不少也简化了一些.所以我们现在就来看看如何进行数据迁移 我们以官方代码来
GuZhenYin
2018/03/30
1.1K0
Entity Framework Core 之数据库迁移
Entity Framework Core 捕获数据库变动
在实际项目中我们往往需要记录存储在数据库中数据的变动(例如修改数据前记录下数据的原始值),这样一来在发生误操作时可以将数据恢复到变动前的状态,也可以追溯到数据的修改人。大部分开发人员会自己定义记录数据变动的代码,但是这样不仅费时费力有时还会影响到这个业务的性能。当然,我们也可以利用数据库触发器来记录这些操作,在 SQL Server 数据库 2017 以上版本中给我们提供了跟踪数据库数据更改的功能,利用这个功能可以准确的记录数据库数据的变动。这个功能虽然强大但是某些时候我们使用的数据库并不是 SQL Server 数据库,或者某些情况下我们不适合使用 SQL Server 数据库所提供的这个功能。那么这个时候该怎么办呢?如果你使用的是 Entity Framework Core 2.0 及以上版本来开发项目的话,那这个问题就好解决了。在 Entity Framework Core 中,只要捕获到了数据变更记录,我们就可以将数据随时还原到变更前的状态,在这里数据库变更记录被称为审计数据。那么我们先来看两个问题:
喵叔
2020/09/08
6100
Entity Framework Core 2.1,添加种子数据
EFCore 2.1出来有一段时间了,里面的新功能还没怎么用,今天研究下如何使用EF Core 2.1添加种子数据。
solenovex
2018/12/04
1.7K0
Entity Framework Core 2.1,添加种子数据
浅析Entity Framework Core中的并发处理
本文讲述如何使用Entity Framework Core来实现一个乐观并发控制,并介绍在.NET Core中使用DbContext进行数据库操作时的一些常见问题和解决方案。
GuZhenYin
2018/01/04
2.8K0
浅析Entity Framework Core中的并发处理
使用Entity Framework Core访问数据库(DB2篇)
上一篇讲了一些EF Core访问Oracle的坑。(感兴趣请移步:使用Entity Framework Core访问数据库(Oracle篇))
GuZhenYin
2019/05/25
1.3K0

相似问题

使用Entity Framework Core共享表

115

可以使用Entity Framework Core创建触发器吗?如何使用Entity Framework Core创建触发器

265

使用Entity Framework Core创建具有外键的新表

42

使用entity Framework连接LINQ表

21

Distinct on with entity framework core

124
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档