gpt4 book ai didi

c# - Entity Framework 4.1 代码优先外键 ID

转载 作者:IT王子 更新时间:2023-10-29 04:42:14 24 4
gpt4 key购买 nike

我有两个一对多引用的实体。当 Entity Framework 创建表时,它会创建两个外键,一个用于我用流畅的界面指定的键,另一个用于 ICollection。如何摆脱重复的外键?

public class Person
{
public long RecordId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Username { get; set; }

public long DepartmentId { get; set; }
public virtual Department Department { get; set; }
}

public class Department
{
public long RecordId { get; set; }
public string Name { get; set; }

public virtual ICollection<Person> People { get; set; }
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()
.HasRequired(p => p.Department)
.WithMany()
.HasForeignKey(p => p.DepartmentId)
.WillCascadeOnDelete(false);
}

谢谢!

最佳答案

您必须明确指定关联的多端:

modelBuilder.Entity<Person>()
.HasRequired(p => p.Department)
.WithMany(d => d.People)
.HasForeignKey(p => p.DepartmentId)
.WillCascadeOnDelete(false);

否则 EF 将假设有两个关联:一个未在 Department 中公开,具有外键 DepartmentId 和导航属性 DepartmentPerson 类中,如您在 Fluent 代码中定义的那样 - 另一个关联属于公开的导航属性 People 但与 Person< 中的另一个未公开的结束 和由 EF 自动创建的外键。这是您在数据库中看到的另一个键。

关于c# - Entity Framework 4.1 代码优先外键 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5656159/

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