У меня есть вопрос об определении внешнего ключа в EF Code First Fluent API.У меня есть такой сценарий:
Два человека и класс.В моем сценарии автомобиль может назначать человека или нет (один или ноль отношений).Код:
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, или это хороший способ сделать, как сейчас.
Спасибо за помощь.