[英]EF Core - Get related entities for a new unsaved entity
除了通過 ID 手動加載它們之外,在保存新實體之前獲取新實體的相關實體的最佳方法是什么? 我遵循工作單元模式並嘗試獲取相關實體的Name
屬性以進行日志記錄。
在事務內創建日志條目之前嘗試保存實體,但類型、狀態等相關實體仍然是 null。是否可以以這種方式加載相關實體? 或者有更好的方法嗎?
public class DatabaseContext : IdentityDbContext
{
public void SaveChanges(User user)
{
base.Database.BeginTransaction();
var entities = ChangeTracker.Entries()
.Where(x => x.State == EntityState.Added)
.ToList();
base.SaveChanges(); // want to load the related entities after this save
foreach (var entity in entities)
{
this.Add(new LogEntry(entity.Entity)); // log entry uses Name prop of related entities
}
base.SaveChanges();
base.Database.CommitTransaction();
}
}
public class Thing
{
public Guid Id { get; set; }
public string Name { get; set; }
public Guid TypeId { get; set; }
public Guid StatusId { get; set; }
public Guid OwnerId { get; set; }
public Guid LocationId { get; set; }
public virtual Type Type { get; set; }
public virtual Status Status { get; set; }
public virtual Owner Owner { get; set; }
public virtual Location Location { get; set; }
}
public class Type
{
public Guid Id { get; set; }
public string Name { get; set; }
}
public class Status
{
public Guid Id { get; set; }
public string Name { get; set; }
}
我看到有一個References
屬性列出了所有引用。 我們可以遍歷它並加載所有引用。 看起來可以在不保存實體的情況下加載相關實體。
不確定這是否是推薦的方法。
public void SaveChanges(User user)
{
base.Database.BeginTransaction();
var entities = ChangeTracker.Entries()
.Where(x => x.State == EntityState.Added)
.ToList();
foreach (var entity in entities)
{
foreach (var reference in entity.References)
{
entity.Reference(reference.Metadata.Name).Load();
}
this.Add(new LogEntry(entity.Entity));
}
base.SaveChanges();
base.Database.CommitTransaction();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.