В чем разница между двумя противоположными настройками отношения modelBuilder? - PullRequest
0 голосов
/ 22 января 2019

Я использую EF Core с первым кодом, и у меня есть модель Company

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; }
}

И я пытаюсь установить отношения между ними через FluentAPI в методе OnModelCreating через modelBuilder.

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);

Какой из них правильный и есть ли разница?

1 Ответ

0 голосов
/ 22 января 2019

Поскольку вы используете Entity Framework Core и правильно соблюдаете соглашение о конфигурации:

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

Эти конфигурации ModelBuilder:

  • Избыточный - оба вызова имеют одинаковый эффект, и вы можете использовать тот, который кажется вам наиболее логичным.
  • Даже больше избыточно - следуя соглашению о конфигурации в EF Core означает, что вам не нужно ничего из них.

Таким образом, нет необходимости настраивать отношения через Fluent API, когда они могут быть обнаружены с помощью соглашений .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...