2013-05-15 58 views
1

的屬性我有一個名爲Employee的實體,該實體具有一個名爲Groups的導航屬性。 我有一個實體,稱爲組,涉及到員工和有名稱和說明字段DataBinding:Generic.HashSet`1不包含名稱爲

我有一個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用於顯示員工所屬的組。我有它設置如下:

<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的屬性。有誰知道這裏有什麼問題嗎?

+0

看看運行時試圖綁定集合而不是實體的異常。組是一個集合,因此沒有名爲Name的屬性。你想要綁定組的集合元素,這是類型爲 –

+0

的類型那麼我該如何繼續?我讀過這個:http://stackoverflow.com/questions/2284374/columns-of-two-related-database-tables-in-one-asp-net-gridview-with-entitydataso和我在做什麼工作在那裏。這裏有什麼不同? – SmashCode

回答

0

有/有同樣的問題。由於fk(外鍵)關係,關係正在返回集合,因爲Emp可以位於多個組中,這會返回一個集合,如AMasoud的評論中所述。因此,您可以讓Groups.Count返回EmpID顯示組表的次數,但是,您不能精確定位它將返回集合的NAME b/c。

如果FK是一對一或多對一(不是一對多),您將有能力取名。

相關問題