数据绑定:通用.HashSet ' 1不包含具有该名称的属性

本文关键字:包含具 属性 通用 HashSet 数据绑定 | 更新日期: 2023-09-27 18:13:41

我有一个名为Employee的实体,它有一个名为Groups的导航属性。我有一个名为Group的实体,它与Employee相关,并具有Name和Description字段

我有一个EntityDataSource筛选员工在GridView1中选择,其中包含组,其定义如下:

<asp:EntityDataSource ID="GroupsByEmployeeSource" runat="server" ConnectionString="name=SafetyContext" DefaultContainerName="SafetyContext" EnableDelete="True" EnableFlattening="False" EnableInsert="True" EnableUpdate="True" EntitySetName="Employees" Include="Groups" Where="it.[EID] == @EmpID">
    <WhereParameters>
        <asp:ControlParameter Name="EmpID" Type="Int32" ControlID="GridView1" PropertyName="SelectedDataKey.Value" />
    </WhereParameters>
</asp:EntityDataSource>

GridView3用于显示Employee所属的组。我把它设置成这样:

<asp:GridView runat="server" ID="GridView3" DataSourceID="GroupsByEmployeeSource" AutoGenerateColumns="False">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Label ID="GroupsByEmployee" runat="server" Text='<%#Eval("Groups.Name") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

和每次我选择一个员工在GridView1以下异常抛出:

System.Web.HttpException: DataBinding: 'System.Collections.Generic.HashSet`1[[SafetyTrackingConceptApplication.DAL.Group, SafetyTrackingConceptApplication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' does not contain a property with the name 'Name'.

我一定是错过了什么,但实体组肯定有一个名为Name的属性。有人知道这里出了什么问题吗?

数据绑定:通用.HashSet ' 1不包含具有该名称的属性

有过同样的问题。关系返回集合是因为fk(外键)关系,因为Emp可以在多个组中,这返回一个集合,正如AMasoud在评论中所解释的那样。所以你可以有组。Count返回EmpID显示组表的次数,但遗憾的是,您无法精确定位NAME,因为它将返回集合。

如果FK是一对一的,或者多对一的(不是一对多的),您将能够拉出名称。