存储过程还是LINQ?

发布于 2024-10-10 06:19:37 字数 1432 浏览 2 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

颜漓半夏 2024-10-17 06:19:37

如果你真的想优化你的sql,我只会使用存储过程。否则,如果您想保持灵活性并使其可以轻松插入过滤器,我会推荐类型管道和过滤器模式。它的工作方式如下:

public class ProductRepository
{
    public IQueryable<Prodcut> GetAll() 
    {
        return yourContext.Products;
    }
}

public static class ProductFilters
{
    public static IQueryable<Product> ByCategory(this IQueryable<Product> query, string category)
    {
        return query.Where(p => p.Category == category);
    }
}

在这种情况下,名称 ProductRepository 可能是错误的,因为它不是真正的存储库,更多的是某种“桥梁”。但这种模式允许您轻松添加其他过滤器,例如扩展方法。从扩展方法和“存储库”返回 IQueryable 非常重要,这使得查询仅被评估一次,并且您可以链接过滤器。

I would only use stored procedure if you really want to optimize your sql. Otherwise if you want to keep it flexible and make it possible to plugin filters easily I would recommend a type pipes and filters pattern. It would work like this:

public class ProductRepository
{
    public IQueryable<Prodcut> GetAll() 
    {
        return yourContext.Products;
    }
}

public static class ProductFilters
{
    public static IQueryable<Product> ByCategory(this IQueryable<Product> query, string category)
    {
        return query.Where(p => p.Category == category);
    }
}

The name ProductRepository is probably wrong in this case since it is not truly a repository, more some kind of "bridge". But this pattern allow you to easily add additional filters like extension methods. It is important that you return IQueryable from the extension methods and your "repository", this make the query to be evaluated only once and you can chain your filters.

淤浪 2024-10-17 06:19:37

我在类似情况下使用以下内容:

  1. Devart LinqConnect
  2. 创建存储过程(用于 SQL 优化)
  3. 包含这些过程模型并使用复杂类型

I am using the following in similar cases:

  1. Devart LinqConnect
  2. Creating stored procedures (for SQL optimizing)
  3. Include these procedures to the model and work with complex types
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文