繁体   English   中英

为 DbSet 创建扩展方法是一种不好的做法吗<t> ?</t>

[英]Is it a bad practice to create extension methods for DbSet<T>?

我对 EF Core 有点陌生,想知道为 DbSet 创建扩展方法是否是对它的滥用。

我的代码库中有许多长查询,我认为这些查询会从扩展方法中受益(从可维护性来说)。

对我来说,这

 var appUsersSegments = dbContext.ApplicationUsersSegments
    .Where(a => a.App.AppId == selectedApp.AppId)
    .OrderBy(a => a.CreatedDate)
    .ToList();

很容易成为

 var appId = 232;
 var appUsersSegments = dbContext.ApplicationUsersSegments.FindRecent(appId);

因为这将防止我的代码因这里和那里的相同长查询而变得臃肿。

有什么我不知道的关于 DbSet 或 EF Core 比创建扩展方法更好吗?

您可能不应该这样做,因为从长远来看,它会更难维护。

它还使开发人员能够编写糟糕的代码。

例如,使用扩展方法从任何地方直接调用 DbContext,同时说它是代码重用,没有任何抽象。

最佳实践是实现一个服务,无论是使用存储库模式还是CQRS 模式,它都抽象了 DbContext 的使用,并且只在其中包含这段代码而不是扩展。

然后稍后为了可重用性,您可以调用该服务来执行您的代码而不是扩展。

这将使您能够控制这些片段中的依赖关系,并且您将能够以更简单的方式使用依赖注入来切换实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM