添加具有多个实体的实体的最佳做法(实体框架)

时间:2018-08-06 17:32:44

标签: c# asp.net entity-framework entity-framework-core

我目前有一个对象Report。该报告对象具有多个子实体,例如WorkOrderReleaseQuestions。我只是想问一下将WorkOrderReleaseQuestions添加到数据库的最佳实践。当前,当创建报告时,我将新的空白对象添加到我的报告对象中,然后将其添加到数据库中。这是因为最终这些组件将由用户填写,因此将空白行放在数据库中并不会带来太大危害,但是我不确定这是最佳实践。如果单独添加新组件会更好吗?还是我正在做的事情不太远?

代码,适合更直观的人:

public async Task<ReportModel> AddReport(ReportModel reportModel)
{
    // CapacityPlanReport report = _mapper.Map<ReportModel, CapacityPlanReport>(reportModel);

    var report = new CapacityPlanReport
    {
        AddedYear = DateTime.Now.ToString(),
        Type = reportModel.Type,
        Eta = reportModel.Eta
    };

    // Create the corresponding pieces of the report in the database.
    report.ReleaseQuestion = new CapacityPlanReleaseQuestion();
    report.WorkOrder = new CapacityPlanWorkOrder();

    _context.CapacityPlanReport.Add(report);
    await _context.SaveChangesAsync();

    var result = await GetReport(report.CapacityPlanReportId);
    return result;
}

1 个答案:

答案 0 :(得分:0)

如果要由用户以后填充组件,则仅插入Report并使用null时根本不填充它们。当用户为您提供适当的数据时,创建实体,将其分配给报表,然后SaveChanges-EF将更新您现有的Report并将子实体和所有必要的FK引用插入数据库中。 / p>

对于尚不存在的东西,null而不是空实例,这可能更自然。一个空实例毕竟是