多重关系与EntityDataSource结合
-
21-08-2019 - |
题
我有一个ADO的.Net实体数据模型为我的数据库。在这个模型中,我有三个相关的表: “用户”表含有用户ID和其他细节。 “运行”表,其中包含的runid,ApproverId和其他细节 包含用户ID和的runid列 “RunToUser”
的关系如下: Users.UserId是一对一的关系,Run.ApproverId User.UserId是多对多与RunToUser.UserId Run.RunId是多对多与RunToUser.RunId
在实体模型,这是表达为与2个独立的关系两个表。一对一的关系,并且用户和运行之间的多对多的关系。
我有一个ASP.net的FormView其中我想编辑中的用户在执行命令中的数据以及相关的数据。
数据绑定是工作在大多数情况下。然而,当我绑定到用户表作为entitydatasource它总是被使用一对一的关系关联。
如何可以强制entitydatasource使用特定的关系关联,这样我可以从一个到一个映射的数据绑定到标签和许多一对多的数据视图?
我试图“EXISTS”伟驰限制了记录,但它仍坚持总是使用一到一个且仅显示所有数据绑定控件的单个用户的where子句。下面是对各用户的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第二但直到我知道确定如何specifiy关联我不知道如何进一步进行。 谢谢, -J
解决方案
刚下了,因为我找到了答案,忘了关闭的问题。
我发现,当你有相同的外部表的多个关联他们获得默认数字后缀。因此,运行表有一个用户和用户1关联。当您使用“包括”参数为EDS你需要知道使用哪个协会,心不是很明显,直到你在EDS模型的样子。
我去想到了一个改名为我所有的协会是有数字后缀。我的运行表现在有一个用户和一个(的用户1代替)审批关联。这让我很容易地破译成包括用于既LINQ和EDS声明性部分,其关系的船。
如果我想包括协会的EDS我会做这样的事情:
Include="Users,Approver"
希望这可以帮助别人,因为这不是对我来说很明显在第一。
其他提示
如果你在你的数据库中的一比一的关系,你可以建立你的实体模型,使得这两个表显示为在实体模型中的一个表。
如果你建立了你这样的结合变得简单多了。