Подтвердить что ты не робот

Fluent API - один для многих

Я не могу найти синтаксис отношений "один ко многим" в свободном API.

В качестве примера у меня есть две таблицы, как показано ниже

Пользователь

Id
Name

UserHistory

Id
UserId
Date

В классах у меня есть

public class User 
{
     public int Id { get; set; }
     public virtual ICollection<UserHistory> Histories { get; set; }
}

public class UserHistory
{
     public int Id { get; set; }
     public int UserId { get; set; }
     public DateTime Date { get; set; }
}

Я пробовал следующее, но я не уверен, действительно ли это правильно.

modelBuilder.Entity<User>()
       .HasRequired(w => w.Histories)
       .WithMany();

modelBuilder.Entity<User>()
       .HasMany(f => f.Histories)
       .WithOptional()
       .HasForeignKey(f => f.UserId);

Каков правильный синтаксис отношения "один ко многим"?

Технически я мог бы разбить его на много-ко-многим, добавив новую таблицу, но я не хотел вводить другую таблицу.

4b9b3361

Ответ 1

В вашей модели объект User имеет много Histories с каждой историей, имеющей требуемый User, а отношение имеет внешний ключ, называемый UserId:

modelBuilder.Entity<User>()
   .HasMany(u => u.Histories)
   .WithRequired()
   .HasForeignKey(h => h.UserId);

(Отношения должны быть обязательными (не обязательными), поскольку свойство внешнего ключа UserId не равно NULL.)