Я немного запутался по поводу того, как делать отношения в EF Core 2.1.Я делаю это бегло.
У меня есть
public class Employee : IdentityUser
{
public int BranchId { get; set; }
public Branch Branch { get; set; }
}
public class Branch
{
public int Id { get; set; }
public int CompanyId { get; set; }
public Company Company { get; set; }
public ICollection<Employee> Employees { get; set; }
}
public class EmployeerConfig : IEntityTypeConfiguration<Employee>
{
public void Configure(EntityTypeBuilder<Employee> builder)
{
builder.ToTable("Employees");
}
}
public class BranchConfig : IEntityTypeConfiguration<Branch>
{
public void Configure(EntityTypeBuilder<Branch> builder)
{
builder.HasKey(x => x.Id);
builder.Property(x => x.Id).ValueGeneratedOnAdd();
builder.HasMany(x => x.Employees);
builder.ToTable("Branches");
}
}
Все примеры, которые я видел в основном, использовали построитель моделей dbcontext, но этот способ больше не нужен, так как теперь вы можете использовать splitэто как я сделал.
Сначала я установил свои отношения двумя способами для компании и филиала. Я даже не указал отношения, пока не пошел. Я строю свою базу данных, которую он знает, однако, когда я пытаюсь сделать это с Сотрудником и филиалом, отношения не сформировались..
Это заставило меня добавить builder.HasMany(x => x.Employees)
в конфигурацию ветки, и теперь связь работает, однако я не уверен, что мне нужно указать что-то в области Сотрудника, чтобы выполнить?
Iтакже не знаю, нужно ли мне еще добавлять виртуальные в мои коллекции и почему, если я не использую ToTable () и не собираю свою базу данных, все имена таблиц сокращаются, я подумал, что это автоматически.