gpt4 book ai didi

c# - 避免 Entity Framework Code First 中的循环依赖

转载 作者:行者123 更新时间:2023-11-30 15:35:54 26 4
gpt4 key购买 nike

假设我有两个实体:NationalityEmployee,关系为 1:n。

public class Employee
{
public int Id { get; set; }
// More Properties

public virtual Nationality Nationality { get; set; }
}

public class Nationality
{
public int Id { get; set; }
public string Name { get; set; }
}

为了在 Entity Framework 中使用 Code-First,我必须再添加一个属性:Employees,我不希望它进入 Nationality(它会创建循环依赖):

public class Nationality
{
public int Id { get; set; }
public string Name { get; set; }

// How to avoid this property
public virtual List<Employee> Employees { get; set; }
}

这样我就可以在配置类中配置关系1:n:

internal class EmployeeConfiguration : EntityTypeConfiguration<Employee>
{
public EmployeeConfiguration()
{
HasKey(f => f.Id);

HasRequired(e => e.Nationality)
.WithMany(e => e.Employees)
.Map(c => c.MapKey("NationalityId"));

ToTable("Employees");
}
}

是否有任何其他方法可以避免循环依赖并从 Nationality 类中消除属性 Employees

最佳答案

使用 WithMany() 重载来配置映射。

internal class EmployeeConfiguration : EntityTypeConfiguration<Employee>
{
public EmployeeConfiguration()
{
HasKey(f => f.Id);

HasRequired(e => e.Nationality)
.WithMany()
.Map(c => c.MapKey("NationalityId"));

ToTable("Employees");
}
}

关于c# - 避免 Entity Framework Code First 中的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373720/

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