none
CommandText是否可以join? RRS feed

  • 問題

  • 在code6421的sample裡,
    CommandText是否可以join?
    CommandText="SELECT VALUE P FROM Customers AS P"
    謝謝。

    <asp:EntityDataSource ID="EntityDataSource1" runat="server"
          CommandText="SELECT VALUE P FROM Customers AS P"
          ConnectionString="name=NorthwindEntities"
          DefaultContainerName="NorthwindEntities" EnableFlattening="False"
          EntitySetName="" EntityTypeFilter=""
          oncontextcreating="EntityDataSource1_ContextCreating"
          onquerycreated="EntityDataSource1_QueryCreated" Select="">
        </asp:EntityDataSource>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
          DataKeyNames="id" DataSourceID="EntityDataSource1">
          <Columns>
            <asp:BoundField DataField="id" HeaderText="id" />
            <asp:BoundField DataField="name" HeaderText="name" />
          </Columns>
        </asp:GridView>

    2011年6月24日 上午 07:35

解答

  • Dear ALT.NET,

     

                之前的範例, CommandText其實只是用來欺騙 EntityDataSource, 事實上, 他在QueryCreated時已經被裡面的LINQ運算式所取代,

         意思是說,只要改QueryCreated裡面的LINQ運算式,就可以達到JOIN.


    MVP 2010 - Visual Developer ASP/ASP.NET My Blog: http://www.dotblogs.com.tw/code6421/
    • 已標示為解答 ALT.NET 2011年6月24日 上午 08:52
    2011年6月24日 上午 08:21
  • Dear ALT.NET

     

            要看LINQ運算式是怎麼寫的,我測試是OK的.

    e.Query = from s1 in _context.Customers join s2 in _context.Orders on s1.CustomerID equals s2.CustomerID
                 select new
                 {
                   id = s1.CustomerID,
                   name = s1.CompanyName,
                   city = s1.City,
                   orderid = s2.OrderID
                 };
    


    MVP 2010 - Visual Developer ASP/ASP.NET My Blog: http://www.dotblogs.com.tw/code6421/
    • 已標示為解答 ALT.NET 2011年6月24日 上午 09:55
    2011年6月24日 上午 09:51

所有回覆

  • Dear ALT.NET,

     

                之前的範例, CommandText其實只是用來欺騙 EntityDataSource, 事實上, 他在QueryCreated時已經被裡面的LINQ運算式所取代,

         意思是說,只要改QueryCreated裡面的LINQ運算式,就可以達到JOIN.


    MVP 2010 - Visual Developer ASP/ASP.NET My Blog: http://www.dotblogs.com.tw/code6421/
    • 已標示為解答 ALT.NET 2011年6月24日 上午 08:52
    2011年6月24日 上午 08:21
  • 謝謝您的回覆,

    在QueryCreated裡我已下Join兩個table,

    而在Gridview裡需要Bind兩個table裡的一些欄位,

    不過卻出現Error:

     

    Unable to cast the type 'System.Object' to type 'Models.myDetails'. LINQ to Entities only supports casting Entity Data Model primitive types.

    2011年6月24日 上午 08:33
  • Dear ALT.NET

     

            要看LINQ運算式是怎麼寫的,我測試是OK的.

    e.Query = from s1 in _context.Customers join s2 in _context.Orders on s1.CustomerID equals s2.CustomerID
                 select new
                 {
                   id = s1.CustomerID,
                   name = s1.CompanyName,
                   city = s1.City,
                   orderid = s2.OrderID
                 };
    


    MVP 2010 - Visual Developer ASP/ASP.NET My Blog: http://www.dotblogs.com.tw/code6421/
    • 已標示為解答 ALT.NET 2011年6月24日 上午 09:55
    2011年6月24日 上午 09:51
  • 成功了,

    謝謝你。

    2011年6月24日 上午 09:55