1

我是实体框架的新手,对此进行了研究但无济于事……尽管我可能没有足够的知识来提出正确的问题。

我有一个名为 users 的表,其中 user_ISN 作为其主键。用户可以是其他用户的朋友,所以我有一个朋友表,其中包含用户的 user_ISN 和朋友的 user_ISN ..创建多对多关系。实体框架已将此建模为与导航属性 user.friends 的自联接,这当然会将您带回用户表。

我需要创建一个 ASP.Net 网页,该网页使用网格视图仅显示当前登录用户的朋友。我为保存当前用户的 ISN 的数据源创建了一个参数。

我无法弄清楚如何只选择当前用户的朋友用户。我尝试的一切都给了我各种我不明白的错误。你能为我指出正确的方向吗?我非常愿意做额外的研究,但我什至不知道要搜索什么。

谢谢你。

4

1 回答 1

1

在您的 EntityDataSource 控件标记中,添加“包含”属性。

例如:

      <asp:EntityDataSource ... Include="Friends" ... />

这是实体框架为您的表提供的导航属性的结果。

现在,您还需要修改 EntityDataSource 控件的“Where”属性。从属性窗口中选择“Where”属性。这将启动“表达式编辑器”窗口。您需要为 User_ISN 创建一个参数。接下来,从列表中指定“参数源”。选择一个适用于您如何将 User_ISN 传递到页面的选项(例如,QueryString,如果您在 url 中传递值)。最终的“Where”表达式应如下所示:

      it.User_ISN == @User_ISN

此时,您已告诉 EntityDataSource 将当前用户的所有朋友包含在结果中,并且您还指定了如何按 User_ISN 为当前用户过滤结果。

请务必注意,此方法仅在您使用 TemplateField 列时才有效。如果您在 GridView 中使用 BoundField 列,这将不起作用。

如果这没有帮助,请提供您收到的错误消息。

于 2011-11-24T19:24:13.377 回答