我是实体框架的新手并且对此进行了研究但没有用.....尽管我可能没有足够的知识来提出正确的问题。
我有一个名为users的表,其中user_ISN为主键。用户可以是其他用户的朋友,所以我有一个朋友表,其中包含用户的user_ISN和朋友的user_ISN。创建多对多的关系。实体框架已将此建模为具有导航属性user.friends的自联接,这当然会将您带回用户表。
我需要创建一个ASP.Net网页,该网页使用网格视图仅显示当前登录用户的朋友。我为数据源创建了一个参数,用于保存当前用户的ISN。
我无法弄清楚如何只选择当前用户的朋友。我尝试的一切都给了我各种我不理解的错误。你能为我指出正确的方向吗?我非常愿意做更多的研究,但我甚至不知道该搜索什么。
谢谢。
答案 0 :(得分:1)
在EntityDataSource控件标记中,添加“包含”属性。
例如:
<asp:EntityDataSource ... Include="Friends" ... />
这是由表格的实体框架提供的导航属性的结果。
现在,您还需要修改EntityDataSource控件的“Where”属性。从属性窗口中选择“Where”属性。这将启动“表达式编辑器”窗口。您需要为User_ISN创建一个参数。接下来,从列表中指定“参数源”。选择适用于将User_ISN传递到页面的选项(例如,如果在URL中传递值,则为QueryString)。最终的“Where”表达式应如下所示:
it.User_ISN == @User_ISN
此时您已告知EntityDataSource将当前用户的所有朋友都包含在结果中,并且您还指定了如何通过User_ISN为当前用户过滤结果。
重要的是要注意,只有使用TemplateField列时,此方法才有效。如果将BoundField列与GridView一起使用,则无法使用。
如果这没有帮助,请提供您收到的错误消息。