繁体   English   中英

LINQ to SQL:存储过程结果

[英]LINQ to SQL: Stored Procedure Results

如何更改LINQ到SQL设计器生成的存储过程结果的类名(除了弄乱designer.cs)?

另外,如何在存储过程的结果集上执行linq查询?

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

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

等问题第二个问题“另外,如何在存储过程的结果集上执行linq查询?” - 如果你想编写它,我建议使用UDF而不是存储过程:这允许你在数据库中进行组合,例如分页和过滤:

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

应该(至少在LINQ-to-SQL中)在服务器上执行TSQL中的所有操作。 否则,您可以调用AsEnumerable()并在调用.NET层使用LINQ-to-Objects:

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>

另外,如何在存储过程的结果集上执行linq查询?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM