具有实体导航属性的数据绑定异常

时间:2010-03-04 20:53:19

标签: asp.net entity-framework data-binding entitydatasource navigation-properties

我有两个实体类:OrderOrderItemOrder包含类型为

的导航属性OrderItemSet
System.Data.Objects.DataClasses.EntityCollection<OrderItem>

在aspx页面上是绑定到此EntityDataSource的FormView:

<asp:EntityDataSource ID="EntityDataSourceOrder" runat="server" 
    ConnectionString="name=EntitiesContext" 
    DefaultContainerName="EntitiesContext" 
    EntitySetName="Order" 
    Include="OrderItemSet"

    // stuff to define a query

</asp:EntityDataSource>

FormView绑定到DataSource,此FormView的ItemTemplate包含一个ListView,我尝试将其绑定到OrderItemSet。它看起来像这样:

<asp:FormView ID="FormViewOrder" runat="server" DataKeyNames="OrderID" 
              DataSourceID="EntityDataSourceOrder" AllowPaging="True" >
    <ItemTemplate>
        ...

        <asp:ListView ID="ListViewOrderItems" runat="server" 
                      DataSource='<%# Eval("OrderItemSet")%>' >
            ...
        </asp:ListView>
    </ItemTemplate>
</asp:FormView>

当我运行应用程序时,我得到一个异常,指向标记中的行DataSource='<%# Eval("OrderItemSet")%>'并告诉我:

DataBinding:System.Web.UI.WebControls.EntityDataSourceWrapper不包含名称为“OrderItemSet”的属性

这里有什么问题?

(我对其他导航属性做了同样的事情,这些属性不是列表,而是单个对象引用,并且有效。)

谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

在我看来,您正在尝试从数据源中评估集合,而不首先绑定到该数据源。

为什么不尝试直接绑定到数据源? E.g。

<asp:ListView ID="ListViewOrderItems" runat="server" 
            DataSourceID="EntityDataSourceOrder"
...
</asp:ListView>