2011-10-19 42 views
0

我有兩張表,Publication和DTPersonnel。發佈有一個主鍵,另一個(DTPersonnel)有一個字段是鏈接返回發佈。我爲我的LinqDataSource發送了一個DBML佈局並鏈接了這兩個表。 我已經將LinqDataSource組件添加到了我的網頁和(用於測試)一個標籤。無法讓LinqDataSource識別關係

我然後設置標籤數據綁定指向一個領域DTPersonnel.DTRoleID這樣的:

<asp:FormView ID="FormView1" runat="server" AllowPaging="True" 
     DataSourceID="LinqDataSource1"> 
     <ItemTemplate> 
      <asp:Label ID="Label1" runat="server" 
    Text='<%# BIND("DTPersonnels.DTRoleID") %>'></asp:Label> 
     </ItemTemplate> 
    </asp:FormView> 
    </asp:Content> 

我的LinqDataSource是設置這樣的:

​​

但是當我運行在瀏覽器中的應用程序我得到以下錯誤:

Exception Details: System.Web.Query.Dynamic.ParseException: No property or field 'DTRoleID' exists in type 'EntitySet`1'

我希望我給了足夠的信息幫助會很好。

回答

1

我假設你既然指定了select子句,這是數據的只讀視圖。如果是這樣,你的問題有一個相當直接的解決方案。但是,如果不是這樣(因爲您的代碼調用Bind方法而不是Eval),則需要更新更新相關字段的更復雜的處理,因爲LinqDataSource指定的成員Select不允許更新。

確保您在條款中選擇了DTPersonnels成員,但從所選內容中刪除DTPersonnels.DTRoleID。如果您致電Eval("DTPersonnels.DTRoleID"),它將顯示相關記錄的成員值。

但是,我認爲在模式文件的配置中也存在問題。根據我的推斷,您預計在PublicationsDTPersonnel之間存在一對一的關係。但是,由於錯誤表明EntitySet上沒有成員,這意味着您允許一對多關係,其中Publications有很多DTPersonnel。如果不存在1對1關係,則代碼將無法確定要顯示哪個相關記錄DTRoleID

如果你真的DO打算爲那裏是許多DTPersonnel相關的Publication,那麼你可能想從其他方式顯示的DTPersonnel列表,並顯示他們的相關Publication的數據,而不是接近這一點。

+0

是的,我不得不DTPersonnel,因爲我有很多DTPersonnel數據行我也使用了eval而不是綁定它似乎解決了我的問題謝謝 – Mike

0

如果你想知道在哪裏本身是從,它位於這裏來的錯誤:

Select="new (DTPersonnels.DTRoleID,PublicationID, DTPersonnels, ActLAYDate, ActRRIPDate, ActPPIDate, ActPPODate, ActECTWDate, TargetECTWDate, TargetPPIDate, TargetRRIPDate, TargetPPODate, TargetLAYDate)"> 

因爲你是從項目表中選擇的數據,它正在尋找一個場「DTRoleID」在那裏。我猜測該表沒有「DTRoleID」字段,導致您收到的錯誤。