У меня есть вопрос об определении внешнего ключа в EF Code First Fluent API. У меня такой сценарий:
Два класса Person и Car. В моем сценарии Car может иметь назначение Person или нет (одно или нулевое отношение). Код:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Car
{
public int Id { get; set; }
public string Name { get; set; }
public Person Person { get; set; }
public int? PPPPP { get; set; }
}
class TestContext : DbContext
{
public DbSet<Person> Persons { get; set; }
public DbSet<Car> Cars { get; set; }
public TestContext(string connectionString) : base(connectionString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasOptional(x => x.Person)
.WithMany()
.HasForeignKey(x => x.PPPPP)
.WillCascadeOnDelete(true);
base.OnModelCreating(modelBuilder);
}
}
В моем примере я хочу переименовать внешний ключ PersonId в PPPPP. В моем сопоставлении я говорю:
modelBuilder.Entity<Car>()
.HasOptional(x => x.Person)
.WithMany()
.HasForeignKey(x => x.PPPPP)
.WillCascadeOnDelete(true);
Но мое отношение равно нулю, и я боюсь, что ошибаюсь, используя метод WithMany, но EF генерирует базу данных с правильными сопоставлениями, и все работает хорошо.
Пожалуйста, скажите, если я ошибаюсь в своем коде Fluent API или это хороший способ сделать то, что сделано сейчас.
Спасибо за помощь.