如何在实体数据源中的一对多关系中包含外键?

时间:2011-08-29 17:34:18

标签: asp.net entity-framework entity-relationship

我正在完成本教程:http://www.asp.net/entity-framework/tutorials/the-entity-framework-and-aspnet-%E2%80%93-getting-started-part-3

大约2/3页面,你会看到:

  

OrderByExpression元素指定结果集将按部门名称中的课程标题排序。请注意部门名称的指定方式:Department.Name。由于Course实体与Department实体之间的关联是一对一的,因此Department导航属性包含Department实体。 (如果这是一对多关系,则属性将包含集合。)要获取部门名称,必须指定Department实体的Name属性。

如何为我的一对多关系设置一个集合?我环顾四周,找不到答案。运行页面时收到以下消息:

  

DataBinding:'System.Data.Objects.DataClasses.EntityCollection`1 [[QCPropertiesModel.Property,App_Code.s8yp4uy2,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null]]'不包含属性名称'DataPublished'。

这是我的代码:

<asp:EntityDataSource ID="PropertiesDataSource" runat="server" 
ConnectionString="name=QCPlacesEntities" 
    DefaultContainerName="QCPlacesEntities" EnableFlattening="False" 
EntitySetName="CustomerDetails"
include="Properties">
</asp:EntityDataSource>

    <asp:QueryExtender ID="SearchQueryExtender" runat="server" 
    TargetControlID="PropertiesDataSource" >
</asp:QueryExtender>
    <asp:GridView ID="SearchGridView" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="CustomerID" DataSourceID="PropertiesDataSource"  AllowPaging="true">
    <Columns>
        <asp:TemplateField HeaderText="Date Published">
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Eval("Properties.DatePublished") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="CustomerID" HeaderText="ID"/>
        <asp:BoundField DataField="CustomerLName" HeaderText="Last Name" />
        <asp:BoundField DataField="CustomerFName" HeaderText="First Name" />
    </Columns>
</asp:GridView>

1 个答案:

答案 0 :(得分:0)

PropertiesModel使用Eval("Properties.DatePublished")Properties有一对多的关系不正确,因为PropertiesModelDatePublished的集合,因此它没有名为{{1的属性}}

Properties[0].DatePublished

将拥有该财产。