Сопоставление внешнего ключа в отношении HasOptional (). WithOptionalDependent () в Entity Framework 6
У меня есть следующая модель данных в 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);
}
}
Когда я запускаю этот код, я получаю точно правильную структуру таблицы, к которой я стремлюсь:
dbo.Contacts
Id (PK)
Student_Id (FK, NULL, CASCADE ON DELETE)
dbo.Students
Id (PK)
Тем не менее, теперь я хотел бы добавитьStudent_Id
свойство будет доступно вContact
юридическое лицо. Так что я могу прочитатьStudent_Id
без необходимости присоединяться к другой таблице через.Student.Id
навигации.
Если я добавлю свойство кContact
сущность, я в конечном итоге либо с двумя столбцамиStudent_Id
а такжеStudent_Id1
или я получаю сообщение об ошибкеEach property name in a type must be unique.
.
Столбец уже находится в базе данных, все, что мне нужно, это также иметь его в сущности, почему это так много проблем? Есть ли решение?