You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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();
    }
}

代码说明

  1. 任务存在性验证:先检查传入的toDoId是否在ToDo表中存在,避免插入无效的外键记录,返回-1表示任务不存在;
  2. 实体创建与赋值:实例化TaskReview对象,填充传入的评分、评论和关联的任务ID;
  3. 添加到上下文:将新创建的评论实体添加到EF Core的DbSet中;
  4. 提交更改:调用SaveChanges()将数据持久化到数据库,返回受影响的行数(成功插入时通常返回1,失败则返回0或抛出异常)。

内容的提问来源于stack exchange,提问作者geetha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:05:30