Я пытаюсь создать 2 сущности, пользовательские и пользовательские обзоры, где отзывы пользователей содержат составные первичные ключи, которые являются идентификаторами пользователей, тот, кто прошел проверку и кто это сделал , этот составной первичный ключ также является внешним ключом к первичному ключу в таблице пользователя, однако EF создает дополнительный столбец, в котором я не вижу смысла в нем, также когда я сохраняю в db объект обзора пользователя в этой колонке не заполняется, он всегда пуст.Композитные первичные ключи и внешние ключи Код Первый
Это вызывает то, что при попытке получить пользователя с его отзывами коллекция отзывов всегда пуста, если столбец User_SubjectId содержит идентификатор пользователя.
Мой запрос как этот
return _context.Users
.Include(u => u.Reviews)
.Where(u => u.SubjectId.Equals(subjectId));
Коллекция Обзоры всегда пуст
объект Обзор пользователя
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace API.Data.Entities
{
public class UserReview
{
[Key, Column(Order = 0), ForeignKey("Reviewer")]
public string ReviewerId { get; set; } //The user that wrote the review
[Key, Column(Order = 1), ForeignKey("ReviewedUser")]
public string ReviewedUserId { get; set; } //The user who was reviewed
[Required]
[Range(1, 5)]
public int Rating { get; set; }
[Required]
public DateTimeOffset DateCreated { get; set; }
[Required]
public virtual User Reviewer { get; set; }
[Required]
public virtual User ReviewedUser { get; set; }
}
}
Субъект Пользователь, как это
public class User
{
[Key]
[Required]
public string SubjectId { get; set; }
public User()
{
Reviews = new List<UserReview>();
}
public virtual ICollection<UserReview> Reviews { get; set; }
}
Однако, когда я добавляю миграции другой колонки получает созданный в моей таблице UserReviews, как показано на рисунке, колонка User_SubjectId
Я не знаю, если это ошибка в EF или я сделал неправильное отображение, в любом случае, какие-то идеи?
Благодаря
Ваш неизвестный столбец создается свойством User.Reviews. Вы не указали свой внешний ключ, поэтому EF автоматически сгенерирует имя. – Kinetic
Что вы имеете в виду, не отображается ?, проверьте мой объект UserReview, есть 2 внешних ключа –
Обзоры связаны с каким-либо внешним ключом? – Kinetic