gpt4 book ai didi

c# - EF 在数据库中创建一个关系 id 列,该列不是模型的一部分

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

我有这个模型:

public class Project
{
public int Id { get; set; }
public int? ParentId { get; set; }
// some more properties...

public List<Project> ChildProjects { get; set; }
}

在数据库中,创建列“ProjectId”,用于跟踪与父项目的关系。

由于“ProjectId”不是实体模型的一部分,因此我无法在查询中引用它。

如何防止创建此列,并改用“ParentId”?

更新

这是我的 DbContext:
public class ProjectsDbContext : DbContext
{
public ProjectsDbContext(DbContextOptions<ProjectsDbContext> options) : base(options) { }

public DbSet<Project> Projects { get; set; }
}

最佳答案

ProjectId是 EF Core 常规 FK 属性名称 - {Entity Name}{Entity PK Property Name} .

像往常一样,当约定与您的模型不匹配时,您必须使用带有数据注释或流畅 API 的显式配置,例如在您的情况下

modelBuilder.Entity<Project>()
.HasManye(e => e.ChildProjects)
.WithOne()
.HasForeignKey(e => e.ParentId); // <--

有关更多信息,请参阅 Relationships EF Core 文档的部分。

关于c# - EF 在数据库中创建一个关系 id 列,该列不是模型的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60414941/

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