Um a zero ou um com HasForeignKey
Eu tenho dois modelos:
public class Person
{
public virtual int Id { get; set; }
public virtual Employee Employee { get; set; } // optional
}
public class Employee
{
public virtual int Id { get; set; }
public virtual int PersonId { get; set; }
public virtual Person Person {get; set; } // required
}
public class EmployeeConfiguration : EntityTypeConfiguration<Employee>
{
public EmployeeConfiguration()
{
Property(e=>e.PersonId) // I need this property mapped
.HasColumnName("person_id")
.HasColumnType("int");
}
}
Eu quero mapeá-los usando mapeamento fluente. A tabela de funcionários tem a coluna 'person_id', que não é anulável. Eu tentei seguir:
HasRequired(e => e.Person)
.WithOptional(p => p.Employee)
.Map(m => m.MapKey("person_id"));
Mas isso falha com:
System.Data.Entity.ModelConfiguration.ModelValidationException: Um ou mais erros de validação foram detectados durante a geração do modelo:
person_id: Name: Cada nome de propriedade em um tipo deve ser exclusivo. O nome da propriedade 'person_id' já está definido.
Eu preciso da propriedade PersonId por conta própria, então o que eu basicamente quero é:
HasRequired(e => e.Person)
.WithOptional(p => p.Employee)
.HasForeignKey(e => e.PersonId); // there is no such method
Masnão existe tal método aqui como HasForeignKey