Мне не удается получить отношения один к одному с EF для правильной работы. Я забил блоги, SO и msdn docs, но я ничего не работаю.делают обе модели осведомлены друг о друге с отношением «один к одному» в инфраструктуре сущности asp.net.
У меня есть две модели, класс и экзамен, который выглядеть следующим образом:
[Table("classes")]
public class Class
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[StringLength(255), Required]
public string Title { get; set; }
public virtual Exam Exam { get; set; }
}
[Table("exams")]
public class Exam
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[DisplayFormat(DataFormatString = "{0:h:mm tt}")]
public DateTime? Time { get; set; }
public int ClassId { get; set; }
public virtual Class Class { get; set; }
}
Я хочу, чтобы иметь возможность получить доступ к экзамен из класса и класса от экзамена, но независимо от того, что Я делаю, я нахожу ошибку.
Попытка создания/запуска миграции Я получаю следующее.
The principal end of this association must be explicitly configured using either the relationship fluent API or data annotations.
Если добавить это в моем контексте:
protected override void OnModelCreating(DbModelBuilder builder)
{
builder.Entity<Exam>()
.HasRequired(e => e.Class)
.WithOptional(c => c.Exam);
}
Я получаю следующее сообщение об ошибке:
System.Data.Entity.Infrastructure.DbUpdateException: Entities in 'BenchContext.Exams' participate in the 'Class_Exam' relationship. 0 related 'Class_Exam_Source' were found. 1 'Class_Exam_Source' is expected. ---> System.Data.UpdateException: Entities in 'BenchContext.Exams' participate in the 'Class_Exam' relationship. 0 related 'Class_Exam_Source' were found. 1 'Class_Exam_Source' is expected.
Я не знаю, как сказать свободно апи, как правильно иностранные ключ между двумя моделями, и ничто из этого не влияет.
Что мне не хватает?
Спасибо за ответ. Когда я это сделаю, я получаю следующую ошибку. «Искаженное свойство в ссылочной привязке сопоставляется с столбцом, созданным магазином. Столбец:« Идентификатор ». – kayluhb
Вы изменили 'DatabaseGeneratedOption' на' None'? –
Да, это была проблема. Я действительно с EF добавила бы поддержку. Этот подход имеет смысл, но не ведет себя как любой другой ORM, который я когда-либо использовал, в и вне .net. еще раз спасибо. – kayluhb