c# - Entity Framework Core - 使用依赖注入而不是“上下文”从链接表中检索影子属性
问题描述
我注意到有很多地方使用下面的代码结构:
context.Entry(Notes).Property("CreatedOn").CurrentValue = DateTime.Now;
无论好坏,我都在使用存储库模式,并且我使用依赖注入来访问记录。特别是我loadRelatedEntities
(延迟加载)访问客户端记录上的注释信息。
这是客户实体:
public class Client : IEntityBase, IAuditedEntityBase
{
public Client()
{
Jobs = new List<Job>();
}
public int Id { get; set; }
public string ClientNo { get; set; } = default!;
public string? ClientFirstName { get; set; }
public string ClientLastName { get; set; } = default!;
public virtual ICollection<Note>? Notes { get; }
}
我的Note
实体如下:
public class Note : IEntityBase, IAuditedEntityBase
{
#nullable enable
public Note()
{
}
public int Id { get; set; }
public string? Details { get; set; }
public int? JobId { get; set; }
public virtual Job? Job { get; set; }
public int? ClientId { get; set; }
public virtual Client? Client { get; set; }
public int? NoteTypeId { get; set; }
public virtual NoteType NoteType { get; set; }
}
在我的客户端存储库中,我有以下内容:
public class ClientDATARepository : EntityBaseDATARepository<Client>, IClientDATARepository
{
private readonly DATAContext _context;
public ClientDATARepository(DATAContext context) : base(context)
{
_context = context;
}
public void RelatedClientEntities(Client client)
{
_context.Entry(client).Reference(j => j.Notes).Load();
}
}
更新这里是我的笔记库:
using JobsLedger.DATA.ENTITIES;
using JobsLedger.DATA.Repositories.Interfaces;
namespace JobsLedger.DATA.Repositories
{
public class NoteDATARepository : EntityBaseDATARepository<Note>, INoteDATARepository
{
public NoteDATARepository(DATAContext context) : base(context) { }
}
}
我在存储库中使用“上下文”并使用依赖注入来访问相关类中的数据,在这种情况下ClientServices
。
public class ClientServices : IClientServices
{
IClientDATARepository clientDATARepository,
public ClientServices(IClientDATARepository clientDATARepository,
{
ClientDATARepository = clientDATARepository;
}
}
所以在那个使用依赖注入来加载客户端存储库的类中;结果,我有一个加载了相关实体的客户端,特别是“Notes”。
ClientDATARepository.RelatedClientEntities(client);
所以如果我去说:
var noteModel = client.notes
并检查笔记我只得到在实体中设置的实体属性,没有阴影属性。
我还注意到我不能使用
context.Entry(Notes).Property("CreatedOn").CurrentValue = DateTime.Now;
因为我无法访问上下文...
因此,鉴于我使用存储库来获取客户端,在这种情况下,而不是直接获取上下文,我如何访问链接到客户端的笔记的那些影子属性?
解决方案
推荐阅读
- wxpython - wxPython 简单的 GUI 证明难以捉摸
- python - 为什么我在尝试导入用户模型时收到此 ImportError?
- java - 在 JavaFX 画布上绘图什么都不做
- javascript - 使用 fetch 进行 API 调用
- python - Raspberry Pi 网络服务器响应局域网上的 iOS 设备很慢
- docker - 如何连接到运行 asp.net core 的 EC2 实例
- c# - 使用 HtmlAgilityPack 在相邻列中按名称刮取员工总数
- javascript - 我正在尝试用javascript中一个字段的用户输入计算自动填充文本字段到另一个字段
- xml - 数据未保存在文件 xml 中
- selenium - 带有 pyvirtualdisplay 和 Xvfb 的 Selenium 脚本无法在 linux vm 上的 cron 上运行