1

Groups というナビゲーション プロパティを持つ Employee というエンティティがあります。従業員に関連するグループという名前のエンティティがあり、名前と説明のフィールドがあります

GridView1 で選択された従業員でフィルター処理する EntityDataSource があり、インクルード グループがあり、次のように定義されています。

<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 は、従業員が属するグループを表示するために使用されます。私はそれを次のように設定しました:

<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'.

何かが欠けているに違いありませんが、Entity Group には Name というプロパティがあることは間違いありません。ここで何が間違っているのか誰にもわかりませんか?

4

1 に答える 1

0

同じ問題を抱えている/持っていた. AMasoud のコメントで説明されているように、Emp が複数のグループに属することができるという点で、fk (外部キー) の関係により、関係はコレクションを返します。したがって、Groups.Count で EmpID がグループ テーブルに表示される回数を返すことができますが、残念ながら、コレクションを返すことになる NAME b/c を特定することはできません。

FK が 1 対 1 または多対 1 (1 対多ではない) の場合、名前を取得できます。

于 2014-10-05T13:55:05.400 に答える