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

如何在创建Job时同步生成关联的JobDates记录(1-1关联)

解决方案

由于Jobs与JobDates是1-1主键/外键关联,JobID需在Job插入数据库后自动生成,你可以通过以下两种方式实现创建Job时同步生成JobDates记录:

方式一:分两次保存(手动关联ID)

先保存Job获取自动生成的ID,再创建JobDates并关联该ID后保存:

public async Task<RedirectToPageResult> OnPost() 
{
    var Job = new Job()
    {
        JobNum = AddJobRequest.JobNum,
        CustomerId = AddJobRequest.CustomerId,
        JobName = AddJobRequest.JobName,
        JobDescription = AddJobRequest.JobDescription,
        JobType = AddJobRequest.JobType,
        JobStatusId = AddJobRequest.JobStatus,
        JobPM = AddJobRequest.JobPM,
        JobSM = AddJobRequest.JobSM,
        JobQty = AddJobRequest.JobQty
    };
    _context.Jobs.Add(Job);
    // 第一次保存,生成Job的主键ID
    await _context.SaveChangesAsync();

    // 创建关联的JobDates记录,绑定刚生成的JobID
    var jobDates = new JobDates()
    {
        JobID = Job.JobID,
        // 按需填充JobDates的其他业务字段,比如创建时间
        CreatedDate = DateTime.Now
    };
    _context.JobDates.Add(jobDates);
    // 第二次保存,插入JobDates记录
    await _context.SaveChangesAsync();

    CustomerList = await _context.Customers.ToListAsync();
    return new RedirectToPageResult("/Index");
}

方式二:利用导航属性(单次保存)

如果实体类已配置导航属性(比如Job类包含public JobDates JobDates { get; set; },JobDates类包含public Job Job { get; set; }),可以直接关联两个实体,EF会自动处理主键关联,只需一次保存:

public async Task<RedirectToPageResult> OnPost() 
{
    // 先创建JobDates实例
    var jobDates = new JobDates()
    {
        // 填充JobDates的业务字段
        CreatedDate = DateTime.Now
    };

    var Job = new Job()
    {
        JobNum = AddJobRequest.JobNum,
        CustomerId = AddJobRequest.CustomerId,
        JobName = AddJobRequest.JobName,
        JobDescription = AddJobRequest.JobDescription,
        JobType = AddJobRequest.JobType,
        JobStatusId = AddJobRequest.JobStatus,
        JobPM = AddJobRequest.JobPM,
        JobSM = AddJobRequest.JobSM,
        JobQty = AddJobRequest.JobQty,
        JobDates = jobDates // 通过导航属性关联两个实体
    };
    _context.Jobs.Add(Job);
    // 单次保存即可同时插入Job和JobDates,EF自动处理外键赋值
    await _context.SaveChangesAsync();

    CustomerList = await _context.Customers.ToListAsync();
    return new RedirectToPageResult("/Index");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:45:04