我有一个看起来像这样的实体:
public class Item
{
public int Id { get; set; }
public int OwnerId { get; set; }
[ForeignKey(nameof(OwnerId))]
public virtual User Owner { get; set; }
public int CategoryId { get; set; }
[ForeignKey(nameof(CategoryId))]
public virtual Lookup Category { get; set; }
}
我遇到的问题是只填充Owner
导航属性,而不是我的Category
导航属性,我不知道为什么。
我通过这样的通用存储库添加实体:
public virtual T Add(T entity)
{
return DbContext.Set<T>().Add(entity);
}
我试图像这样提取类别名称:
public Item CreateItem(Item item)
{
var createdItem = ItemListRepository.Add(item);
UnitOfWork.Commit();
//DataContext.Items.Include(x => x.Category).First(x => x.Id == createdItem.Id);
AuditService.AddUserActionAudit<Item>(
AuditAction.ItemCreation,
$"Added new {createdItem.Category?.Name ?? "item"}: {item.Description}",
item.Id);
return createdItem;
}
只有在我包含注释掉的代码行以检索实体但同时明确请求相关的类别实体时,才会填充该类别。为什么我必须为我的Category实体而不是我的Lookup实体执行此操作?这可能会有什么不同,这会导致行为上的差异?
我看不到我的查找(类别)和用户实体之间的任何显着差异 - 如果您认为值得关注,我可以在此处发布。