代码之家  ›  专栏  ›  技术社区  ›  Ben Hoffman

从2个实体框架查询中加载包含数据的嵌套中继器

  •  1
  • Ben Hoffman  · 技术社区  · 15 年前

    我有两张表A和表B,它们有很多对很多关系。我使用嵌套中继器在网页中显示数据。我的问题是,如何编写一个objectquery或iqueryable查询来返回a中的父行和b中的子行,以便我可以将它们用作我的内部和外部转发器的数据源。我有下面写的代码,但我不确定它是正确的还是接近的。

    <asp:Repeater ID="A" runat="server"><br/>
        <ItemTemplate><br/>
            <h2 class="Information"><br/>
                <%# Eval("Name") %> (<%#Eval("Abbreviation")%>)<br/>
            </h2><br/>
            <hr/><br/>
            <p> <%# Eval("Description")%> </p><br/>
            <asp:Repeater ID="B" runat="server"><br/>
                <ItemTemplate><br/>
                    <li><br/>
                        <a href="..Pages/Category.aspx?<%# Eval("ID") %>"><br/>
                            <%# Eval("Name") %><br/>
                        </a><br/>
                    </li>                        <br/>
                </ItemTemplate><br/>
            </asp:Repeater><br/>
        </ItemTemplate><br/>
    </asp:Repeater>      
    

    这是迄今为止我的C代码:

            using (DBEntities connection = new DBEntities())
            {
    
    
                ObjectQuery<A> As = connection.A;
                IQueryable<A> aQuery = from a in As
                                                   orderby a.SortOrder
                                                   select a;
    
    
                TechnologyRepeater.DataSource = As;
                DataBind();
            }
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   Brian Mains    15 年前

    多对多是根据结构设置不同的方式。如果类A具有B实体的集合,则可以将其直接绑定到DataSource属性,如下所示:

    <asp:Repeater ... DataSource="<% Eval("Bs") %>">
    

    因此,这取决于对象模型中引用实体的方式,而对象模型又因多对多设置而有所不同。看看这个: http://thedatafarm.com/blog/data-access/inserting-many-to-many-relationships-in-ef-with-or-without-a-join-entity/