为什么我要对中继器和EF使用ToList()方法?

本文关键字:ToList 方法 使用 EF 我要 中继器 为什么 | 更新日期: 2023-09-27 18:06:15

我正在使用sql server数据库和实体框架(版本6)。

看下面的代码:

public partial class WebForm1 : System.Web.UI.Page
{
    private bdd1Entities bdd = new bdd1Entities();
    protected void Page_Load(object sender, EventArgs e)
    {
            Repeater1.DataSource = bdd.Personnes.ToList();
            Repeater1.DataBind();
    }
}

以下是aspx页面中的中继器源:

    <asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <tr>
            <td><%# DataBinder.Eval(Container.DataItem, "Nom")  %></td>
        </tr>
    </ItemTemplate>
    </asp:Repeater>

它工作得很好,但如果我删除后面代码中的ToList()函数调用,我得到

this exception: System。NotSupportedException

由于

我不明白为什么。我只是想明白谢谢

为什么我要对中继器和EF使用ToList()方法?

Repeater控件提供了对实现System.Collections.IEnumerable接口(如DataView,ArrayList, Hashtable等)或IListSource接口的任何对象的数据绑定支持。在您的情况下,可能不存在从上述任何一个接口到您的"Personnes"实例的任何隐式对话。这就是为什么需要将其转换为List或将其转换为源接口类型。