我正在嘗試創建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; }
}
}
用戶實體是這樣
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實體,這兩個外鍵是否存在 –
評論鏈接到哪一個外鍵? – Kinetic