Mapeando chave estrangeira na relação HasOptional (). WithOptionalDependent () no Entity Framework 6
Eu tenho o seguinte modelo de dados no Entity Framework 6.1.3:
using System.Data.Entity;
public class Student
{
public int Id { get; set; }
public virtual Contact Contact { get; set; }
}
public class Contact
{
public int Id { get; set; }
public virtual Student Student { get; set; }
}
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Contact>()
.HasOptional(x => x.Student)
.WithOptionalDependent(x => x.Contact)
.WillCascadeOnDelete(true);
}
}
public static class Program
{
private static void Main()
{
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
using (var context = new MyContext())
context.Database.Initialize(force: true);
}
}
Ao iniciar esse código, obtenho exatamente a estrutura de tabela correta que pretendo:
dbo.Contacts
Id (PK)
Student_Id (FK, NULL, CASCADE ON DELETE)
dbo.Students
Id (PK)
No entanto, agora eu gostaria de adicionar oStudent_Id
propriedade para estar disponível noContact
entidade. Para que eu possa ler oStudent_Id
sem precisar ingressar na outra tabela através.Student.Id
navegação.
Se eu adicionar a propriedade aoContact
entidade, acabo com duas colunasStudent_Id
eStudent_Id1
, ou eu acabo com uma mensagem de erro dizendoEach property name in a type must be unique.
.
A coluna já está no banco de dados, tudo o que preciso é tê-la na entidade também, por que há tanto problema? Há uma solução?