gpt4 book ai didi

c# - 两个相反的 modelBuilder 关系设置有什么区别?

转载 作者:行者123 更新时间:2023-11-30 14:45:18 25 4
gpt4 key购买 nike

我将 EF Core 与代码优先一起使用,并且我有模型公司

public class Company
{
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime FoundationDate { get; set; }
public string Address { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string Logo { get; set; }
public ICollection<Contact> Contacts { get; set; }
}

和模型联系人。

public class Contact
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public Guid CompanyId { get; set; }
public Company Company { get; set; }
public ICollection<Resource> Resources { get; set; }
}

我尝试通过 modelBuilder 在 OnModelCreating 方法中通过 FluentAPI 设置它们之间的关系。

modelBuilder.Entity<Company>()
.HasMany<Contact>(s => s.Contacts)
.WithOne(g => g.Company)
.HasForeignKey(s => s.CompanyId);

modelBuilder.Entity<Contact>()
.HasOne<Company>(s => s.Company)
.WithMany(g => g.Contacts)
.HasForeignKey(s => s.CompanyId);

哪一个是正确的,有什么区别吗?

最佳答案

由于您使用的是 Entity Framework Core,并且您正确地遵循了 Convention over Configuration:

// ClassName + Id
public Guid CompanyId { get; set; }
public Company Company { get; set; }

这些 ModelBuilder 配置是:

  • 冗余 - 两个调用具有相同的效果,您可以使用您认为最合乎逻辑的那个。
  • 甚至更多冗余 - 遵循 EF Core 中的配置约定意味着您不需要它们。

因此,当可以通过 conventions 发现关系时,无需通过 Fluent API 配置关系.

关于c# - 两个相反的 modelBuilder 关系设置有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54308070/

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