我有两个实体类:Order
和OrderItem
。 Order
包含类型为
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”的属性
这里有什么问题?
(我对其他导航属性做了同样的事情,这些属性不是列表,而是单个对象引用,并且有效。)
谢谢你的帮助!
答案 0 :(得分:1)
在我看来,您正在尝试从数据源中评估集合,而不首先绑定到该数据源。
为什么不尝试直接绑定到数据源? E.g。
<asp:ListView ID="ListViewOrderItems" runat="server"
DataSourceID="EntityDataSourceOrder"
...
</asp:ListView>