如何在EF Code First中为含外键的表添加单条记录
实现通过ToDoId添加任务评分与评论的方法
数据表结构
ToDo表
| 字段名 | 说明 |
|---|---|
| ToDoId | 主键(PK) |
| Title | 任务标题 |
| description | 任务描述 |
| Category | 任务分类 |
| AssignedDate | 任务分配日期 |
| DueDate | 任务截止日期 |
TaskReview表
| 字段名 | 说明 |
|---|---|
| ReviewId | 评论ID |
| Rating | 评分 |
| Comment | 评论内容 |
| ToDoId | 外键(关联ToDo表的ToDoId) |
需求说明
通过外键ToDoId向TaskReview表添加指定任务的评分(Rating)和评论(Comment)。
补充完整的方法实现
public int AddRatingAndComment(int toDoId, int rating, string comment) { using (var ctx = new Context()) { // 验证目标任务是否存在(可选但推荐,避免无效外键插入) var taskExists = ctx.ToDo.Any(t => t.ToDoId == toDoId); if (!taskExists) { return -1; // 返回-1标识任务不存在 } // 创建TaskReview实体并赋值 var newReview = new TaskReview { ToDoId = toDoId, Rating = rating, Comment = comment // 若ReviewId是数据库自增主键,无需手动赋值 }; // 将实体添加到上下文 ctx.TaskReview.Add(newReview); // 提交更改到数据库,返回受影响行数 return ctx.SaveChanges(); } }
代码说明
- 任务存在性验证:先检查传入的
toDoId是否在ToDo表中存在,避免插入无效的外键记录,返回-1表示任务不存在; - 实体创建与赋值:实例化
TaskReview对象,填充传入的评分、评论和关联的任务ID; - 添加到上下文:将新创建的评论实体添加到EF Core的DbSet中;
- 提交更改:调用
SaveChanges()将数据持久化到数据库,返回受影响的行数(成功插入时通常返回1,失败则返回0或抛出异常)。
内容的提问来源于stack exchange,提问作者geetha
相关产品推荐
相关产品推荐

