【发布时间】:2021-11-19 01:50:57
【问题描述】:
我有两个模型,用户和评论,它们具有一对多的关系。我正在使用 DTO 在我的控制器中创建新评论。评论被添加到电影模型上的评论类型的 ICollection 中(电影和评论也有一对多的关系)。这是来自我的控制器的 sn-p:
var query = db.Movies.Where(i => i.id == reviewDTO.movieId).FirstOrDefault();
Review review = new Review()
{
goreRating = reviewDTO.goreRating,
shockRating = reviewDTO.shockRating,
jumpRating = reviewDTO.jumpRating,
plotRating = reviewDTO.plotRating,
supernaturalRating = reviewDTO.supernaturalRating,
description = reviewDTO.description,
isSpoiler = reviewDTO.isSpoiler
};
try
{
query.Reviews.Add(review);
}
还有模特:
public class User
{
public int id { get; set; }
public string Username { get; set; }
public virtual ICollection<Review> Reviews { get; set; }
}
public class Review
{
public int id { get; set; }
public virtual Movie Movie { get; set; }
public virtual User User { get; set; }
public int goreRating { get; set; }
public int shockRating { get; set; }
public int jumpRating { get; set; }
public int plotRating { get; set; }
public int supernaturalRating { get; set; }
public string description { get; set; }
public bool isSpoiler { get; set; }
}
如何使用实体框架在控制器中添加关系并为每个评论设置外键 userId?
【问题讨论】:
-
“我如何在控制器中添加关系”你能解释一下它的含义吗?控制器在哪里?
-
我认为
Review只需要UserId(int) 作为属于其User属性的外键属性。 -
你需要正确定义关系。
-
@Serge 我的意思是,在我使用实体框架定义关系之后,我如何检索和存储这个关系?控制器的一部分包含在问题中,完整的不是因为我不确定它是否全部相关并且那里有很多代码。
-
@GertArnold 我以为实体框架会自动管理这个?我了解它通常是如何工作的,但我想始终如一地使用 EF 的导航属性来实现这一点
标签: asp.net-mvc entity-framework .net-core model-view-controller entity-framework-core