使用Entity Framework时如何在Winform场景下实现DataGridView的分页?

Posted

技术标签:

【中文标题】使用Entity Framework时如何在Winform场景下实现DataGridView的分页?【英文标题】:How can I implement paging for DataGridView in Winform scenario when using Entity Framework? 【发布时间】:2013-08-20 08:36:18 【问题描述】:

我可以在网上找到的所有内容都是为 asp.net 使用的。 我想要的只是每次只从数据库中检索记录的页数。这不可能吗?

瓶颈似乎是上下文的处理。不知道如何解决这个问题。

谢谢。 妮可

【问题讨论】:

【参考方案1】:

如果你只需要一个简单的 sql 查询,你可以使用这个例子:

using System;
using System.Data.SqlClient;

class Program

static void Main()

    //
    // The name we are trying to match.
    //
    string dogName = "Fido";
    //
    // Use preset string for connection and open it.
    //
    string connectionString = ConsoleApplication1.Properties.Settings.Default.ConnectionString;
    using (SqlConnection connection = new SqlConnection(connectionString))
    
        connection.Open();
        //
        // Description of SQL command:
        // 1. It selects all cells from rows matching the name.
        // 2. It uses LIKE operator because Name is a Text field.
        // 3. @Name must be added as a new SqlParameter.
        //
        using (SqlCommand command = new SqlCommand("SELECT count(*) FROM Dogs1 WHERE Name LIKE @Name", connection))
        
            //
            // Add new SqlParameter to the command.
            //
            command.Parameters.Add(new SqlParameter("Name", dogName));
            //
            // Read in the SELECT results.
            //
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            
                int count = reader[0];
            

            // Call Close when done reading.
            reader.Close();
        
    


请记住,您需要在数据库中找到 connectionString。取决于您拥有的数据库,您可以使用 google 来了解如何操作。

【讨论】:

我不认为你的问题是正确的。我不是在问如何获取某些查询的计数。我想每次只获取一页的数据量。 @Nico “一页数据量”是什么意思? 例如,如果我计划在一页中显示 10 条记录,那么我只想在用户每次单击 Next/Previous/Last/First 按钮时从数据库中返回 10 条记录。明白了吗? @Nico 现在我做到了。你需要的是 ROW_NUMBER()。这个例子会帮助你 - ***.com/questions/3869311/… 我期待一个解决方案,将 Winform 中的 DGV 使用与 EF 集成。无论如何,我设法弄清楚了。无论如何,谢谢。

以上是关于使用Entity Framework时如何在Winform场景下实现DataGridView的分页?的主要内容,如果未能解决你的问题,请参考以下文章

在 Entity Framework 4.1 中,如何使用 SqlQuery 创建在编译时不知道查询详细信息的匿名对象

使用 Entity Framework Migrations 4.3 时如何显式命名数据库

Entity Framework 学习系列 - EF 增删改

如何在 Entity Framework 5 中使用基于 SQL 会话的表

使用 Entity Framework Core 时,通过代码自动进行 Migration

使用 ASP.NET Core 和 Entity Framework Core 进行集成测试 - 如何在每次测试时恢复数据库中的测试数据?