與EntityDataSource的多個關係綁定

.net asp.net entity-framework entity-relationship

我的數據庫有一個ADO .Net實體數據模型。在這個模型中,我有三個相關的表:“Users”表包含UserId和其他細節。 “運行”包含RunId,ApproverId和包含UserId和RunId列的其他詳細信息“RunToUser”的表

關係如下:Users.UserId是Run.ApproverId的一對一關係。用RunToUser.UserId Run.RunId是RunToUser.RunId的多對多,Run.UserId是多對多的關係。

在實體模型中,這表示為具有2個單獨關係的兩個表。用戶與運行之間的一對一關係和多對多關係。

我有一個ASP.net Formview,我想在Run中編輯數據以及用戶中的相關數據。

在大多數情況下,數據綁定工作正常。但是,當我將Users表作為entitydatasource綁定時,它始終使用一對一關係關聯。

如何強制entitydatasource使用特定的關係關聯,以便我可以將數據從一對一映射綁定到標籤,將多對多數據綁定到數據視圖?

我在where子句中嘗試了“EXISTS”,這限制了記錄,但它仍然堅持始終使用一對一,只在所有數據綁定控件中顯示單個用戶。這是用戶的entitydatasource:

  <asp:EntityDataSource ID="edsUsers_DET" runat="server" 
        ConnectionString="name=MyEntities" DefaultContainerName="MyEntities" 
        EntitySetName="Users" 
        Where="EXISTS(SELECT VALUE p FROM it.Run AS p WHERE p.RunID = @RunID)" >
        <WhereParameters>
           <asp:ControlParameter ControlID="fvRun"  Name="RunID" Type="Int32" />
        </WhereParameters>        
    </asp:EntityDataSource>

我假設我需要兩個實體數據源,一個用於標籤,第二個用於gridview,但直到我知道確定如何指定關聯,我不知道如何繼續進行。 Thx,-J

一般承認的答案

剛跟進,因為我找到答案,忘了關閉這個問題。

我發現當你與同一個外表有多個關聯時,它們會默認獲得一個數字後綴。因此,Run表有一個Users和一個Users1關聯。當您使用EDS的“包含”參數時,您需要知道在查看EDS模型之前使用哪個關聯是不明顯的。

我以為我重新命名了所有具有數字後綴的關聯。 My Run表現在具有Users和Approver(而不是Users1)關聯。這讓我可以輕鬆破譯哪些關係包含在LINQ和EDS聲明部分中。

如果我想在EDS中包含兩個關聯,我會做類似的事情:

Include="Users,Approver"

希望這有助於其他人,因為一開始對我來說不是很明顯。


熱門答案

如果數據庫中存在一對一的關係,則可以構建實體模型,使這兩個表在實體模型中顯示為單個表。

如果你像這樣構建它,你的綁定就會變得簡單得多。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因