gpt4 book ai didi

entity-framework-core - 如何与最新的 EF Core 每晚构建建立多对多关系?

转载 作者:行者123 更新时间:2023-12-03 10:22:53 25 4
gpt4 key购买 nike

如何使用 Fluent API 在 EF7 EF Core 中的两个表之间创建多对多关系?例如,假设您有以下表格:

Photos to People database diagram

如何利用 DbContext 类中的模型构建器来定义这样的关系?

我见过this来自 EF 团队 session 记录中关于此主题的链接,但它来自去年,我想知道是否有关于如何在 EF7 EF Core 中处理此问题的新信息。

我能够在照片和照片人物以及人物和照片人物之间创建一对多的关系。数据库按照我的意愿生成,但人物和照片之间的导航现在需要与中间实体进行交互。我想避免这种情况。

最佳答案

这是由 #1368 跟踪的.解决方法是将连接表映射到实体:

class Photo
{
public int Id { get; set; }
public ICollection<PersonPhoto> PersonPhotos{ get; set; }
}

class PersonPhoto
{
public int PhotoId { get; set; }
public Photo Photo { get; set; }

public int PersonId { get; set; }
public Person Person { get; set; }
}

class Person
{
public int Id { get; set; }
public ICollection<PersonPhoto> PersonPhotos{ get; set; }
}

一定要配置 PersonPhoto使用复合键:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<PersonPhoto>().HasKey(x => new { x.PhotoId, x.PersonId });
}

要导航,请使用 Select:

// person.Photos
var photos = person.PersonPhotos.Select(c => c.Photo);

关于entity-framework-core - 如何与最新的 EF Core 每晚构建建立多对多关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com