我設置我的審計AuditReport並保存它(在調試器中填充代理)後,仍然沒有在數據庫中的條目,我不知道爲什麼。下面是相關的類:在EF中創建對象,其中saveChanges後在DB
public class AuditReport
{
[Key]
[ForeignKey("Audit")]
[Column("AuditReport_ID")]
public int ID { get; set; }
[Required]
public virtual Audit Audit { get; set; }
}
public class Audit
{
[Key]
public int GeneratedID { get; set; }
[Index("Audit_ID", IsUnique = true)]
public int Audit_ID { get; set; }
public virtual AuditReport AuditReport { get; set; }
}
而且方法,新AuditReport創建
public async override Task SaveChangesAsync()
{
using (var dbAccess = new DatabaseAccess())
{
var foundAudit = dbAccess.Audits.Include("AuditReport").Include("AuditReport.Stellungnahmen").SingleOrDefault(_ => _.Audit_ID == Audit.Audit_ID);
if (foundAudit != null)
{
if (foundAudit.AuditReport == null)
{
foundAudit.AuditReport = dbAccess.AuditReports.Create();
foundAudit.AuditReport.Audit = foundAudit;
}
else
foundAudit.AuditReport.Stellungnahmen.ToList().ForEach(_ => dbAccess.Entry(_).State = EntityState.Deleted);
foreach (var item in Stellungnahmen.Where(_ => _.IsChecked == true))
foundAudit.AuditReport.Stellungnahmen.Add(dbAccess.Stellungnahmen.SingleOrDefault(_ => _.KeyWord == item.KeyWord));
}
await dbAccess.SaveChangesAsync();
}
}
正如我已經說過,我已經調試它,一切都看起來很好。
確保你在你的dbcontext中調用'.Commit()'。 –
我沒有交易正在運行。提交是一種事務方法 – Dominik
您實際上並未將條目添加到上下文,但僅設置導航屬性。因此,您的相關條目位於上下文中,但處於未更改的狀態,因此EF不會爲此創建任何查詢。如果它們在上下文的DbSet中正確,則將它們的EntityState設置爲Added。 – DevilSuichiro