[英]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.