【发布时间】:2020-06-27 20:34:33
【问题描述】:
我有以下操作方法来添加父 (Submission) 和子 (SubmissionQuestionSubmission) 对象:
public async Task<IActionResult> Create([Bind("Submission,SubmissionQuestionSubmission")] SubmissionCreate sc )
{
if (ModelState.IsValid)
{
var newsubmission = _context.Submission.Add(sc.Submission);
sc.Submission.Created = DateTime.Now;
await _context.SaveChangesAsync();
foreach (var v in sc.SubmissionQuestionSubmission)
{
v.SubmissionId = sc.Submission.Id;//i though this will be null..
_context.SubmissionQuestionSubmission.Add(v);
}
await _context.SaveChangesAsync();
}
}
一开始我以为代码行不通,因为sc.Submission.Id 父外键将为空,因为我刚刚添加了提交对象。但是我的代码运行良好,那么 ASP.NET Core MVC 和 Entity Framework Core 是如何检索到新添加对象的Id 的呢?它会自动往返于数据库吗?
这是我的模型类:
public partial class Submission
{
public Submission()
{
SubmissionQuestionSubmission = new HashSet<SubmissionQuestionSubmission>();
}
public long Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime? Created { get; set; }
public virtual ICollection<SubmissionQuestionSubmission> SubmissionQuestionSubmission { get; set; }
}
public partial class SubmissionQuestionSubmission
{
public int SubmissionQuestionId { get; set; }
public long SubmissionId { get; set; }
public bool? Answer { get; set; }
public virtual Submission Submission { get; set; }
public virtual SubmissionQuestion SubmissionQuestion { get; set; }
}
【问题讨论】:
-
不需要这样做。您可以(并且应该)将
SubmissionQuestionSubmission添加到Submission.SubmissionQuestionSubmission并调用SaveChanges一次。 -
@GertArnold 您能否就您的回复提供更多建议?
标签: c# asp.net-core entity-framework-core asp.net-core-mvc