Когда вы используете [ForeignKey("Images")]
поверх вашей фк, "Images", как ожидается, будет навигационным свойством внутри вашего Comments
класса, а не именем вашего DbSet
свойства в вашем DbContext
. Вы можете прочитать больше здесь и отношений здесь . В случае, если ваш код основан на определении вашего Comments
класса, вам понадобится свойство Images
.
[ForeignKey("Images")]
public int ImageId { get; set; }
public Images Images { get; set; } // ForeignKey attribute points to this
Несмотря на то, что выше показано, как вы можете использовать [ForeignKey("Images")]
, я бы рекомендовал сделать имя свойства Image
вместо Images
. Это не только лучшее пояснительное имя, но и лишнее [ForeignKey("Image")]
. EF автоматически сопоставит Image
с Image id в соответствии с соглашением об именах.
Судя по тому, как вы используете доступ к комментариям с помощью context.Images.Include("Comments")
, вы, похоже, пытаетесь получить доступ к списку комментариев под изображением. Однако, если вы заметите, что ваша result
переменная будет IQueriable
из Images
. Для этого вам необходимо добавить свойство навигации в ваш класс Images
.
public IEnumerable<Comments> Comments { get; set; }
Поскольку вы уже сопоставили свой внешний ключ, ваше отображение неявно составляет от ImageId
до Comments
. Тем не менее, вы можете использовать атрибут InverseProperty
для обеспечения безопасности (для получения дополнительной информации проверьте ссылку Relationship ). После этого вы можете использовать следующий код:
var result = context.Images.Include(i => i.Comments);