我已经开始使用 EntityFramework 并创建了一个用户模型。 我想要一个自定义静态类,用于存储用户的相关功能,我想知道什么是最佳实践。 我试着阅读了一下,发现了几个选择:
internal static User? Get(ProjectContext context, uint id) =>
context.Get<User>(i => i.Id == id);
private ProjectContext _context;
internal Users(ProjectContext context) =>
_context = context;
internal static User? Get(uint id) =>
new ProjectContext().Get<User>(i => i.Id == id);
处理这个问题的最佳方法是什么? 我相信最好的方法也可以是与我列出的不同的选择,我很乐意听到。
谢谢, 不。
我已经尝试了下面列出的选项并且它们有效,但我想知道最佳实践方法。
现代 .NET 中最惯用的方法是使用 依赖注入,所以如果您要开始一个新的相对较大的项目,最好的方法是第二种方法,因为它可以使用 DI。它可以与第一个结合使用,但我建议使用扩展方法:
internal static UserExts
{
internal static User? GetUser(this ProjectContext context, uint id) =>
context.Get<User>(i => i.Id == id);
}
这允许像
_ctx.GetUser(1)
;这样的用法
对于测试/丢弃项目,任何需要较少仪式的方法都可以。
我还建议研究不同的设计/架构模式,这将使您能够为您的案例做出更合适的选择(例如,有一些 Microsoft 指南)。