与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合法吗? 是的,了解原因