私は2つのエンティティ、ユーザーとユーザーのレビューを作成しようとしています。ユーザーのレビューには、ユーザーのID、レビューを受けたユーザー、このコンポジット・プライマリ・キーもユーザのテーブル内のプライマリ・キーへの外部キーですが、EFはその中にポイントが表示されない追加のカラムを作成しています。それは常に空です。複合プライマリキーと外部キーコードファースト
これは、レビューのあるユーザーを取得しようとすると、User_SubjectId列にユーザーのIDが含まれていない限り、レビューコレクションは常に空であることが原因です。
私のクエリは、この
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; }
}
}
Userエンティティは、この
01のようなものです私はこの写真に示すように、別の列が私のUserReviewsテーブルに作成された移行を追加するときはしかし、列はあるUser_SubjectId
これはバグである場合、私は知りませんEFか私はマッピングが間違っていました、どんな場合でもアイディアですか?
ありがとうございました
未知の列は、User.Reviewsプロパティによって作成されます。あなたはその外部キーをマップしていないので、EFはその名前を自動的に生成します。 – Kinetic
マップされていないということは何ですか?私のUserReviewエンティティをチェックしてください.2つの外部キーがあります –
レビューは外部キーのどちらにリンクされていますか? – Kinetic