代码之家  ›  专栏  ›  技术社区  ›  Ronnie Overby

LINQ到SQL:存储过程结果

  •  6
  • Ronnie Overby  · 技术社区  · 15 年前

    2 回复  |  直到 15 年前
        1
  •  8
  •   Marc Gravell    15 年前

    你能在dbml中编辑这个吗?就我个人而言,我倾向于将自动生成的类型(来自函数和存储过程)视为DAL本地的DTO,因此我立即将它们重新映射到我自己的POCO表示——即。

    var qry = from row in ctx.SomeProc(12345)
              select new Foo {ID = row.ID, Name = row.Name };
    

    var qry = (from row in ctx.SomeFunction(12345)
              where row.IsActive
              select row).Skip(10).Take(10);
    

    它应该(至少在LINQ到SQL中)在服务器上执行TSQL中的所有操作。否则,你可以打电话 AsEnumerable() 并在调用.NET层上使用LINQ访问对象:

    var qry = (from row in ctx.SomeProc(12345).AsEnumerable()
              where row.IsActive
              select row).Skip(10).Take(10);
    

    要编辑dbml(只是xml),请更改 ElementType/@Name

    <Function Name="dbo.CustOrderHist" Method="CustOrderHist">
      <Parameter Name="CustomerID" Parameter="customerID" Type="System.String" DbType="NChar(5)" />
      <ElementType Name="FooBar"> <!-- ********** HERE ************ -->
          <Column Name="ProductName" Type="System.String" DbType="NVarChar(40) NOT NULL" CanBeNull="false" />
          <Column Name="Total" Type="System.Int32" DbType="Int" CanBeNull="true" />
      </ElementType>
    </Function>
    
        2
  •  2
  •   Ziltoid    15 年前

    另外,如何执行linq查询

    var query = from results in datacontext.storedprocedurename()
                where results.whatever == 1
                select results;