2009-02-27 16 views
6

LINQからSQLデザイナに生成されたストアドプロシージャの結果のクラス名を変更するにはどうすればできますか?LINQ to SQL:ストアドプロシージャの結果

また、ストアドプロシージャの結果セットに対してlinqクエリを実行するにはどうすればよいですか?

+0

参考資料:http://blog.benhall.me.uk/2008/05/linq-to-sql-stored-procedure-vs.html –

答えて

7

あなたはDBMLでこれを編集することができますか?すなわち

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

など - 個人的に、私は私自身のPOCO表現にDALに対してローカルでのDTOとして(関数やストアドプロシージャからの)自動生成された型を治療する傾向があるので、私はすぐに再マッピングし、それら"もう一度、どのようにストアドプロシージャの結果セットでlinqクエリを実行できますか? - あなたはそれを構成したい場合、私は、ストアドプロシージャの代わりにUDFを使用することをお勧めします:これは、データベースの構成を行うことができ、例えば、ページングとフィルタリングのために:

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

べき(でLINQ-へ-SQLは少なくとも)サーバーでTSQLのすべてを行います。そうしないと、あなたはAsEnumerable()を呼び出し、呼び出し.NET層でLINQツーオブジェクトを使用することができます。

<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> 
:こちらを ElementType/@Nameを変更、(XMLだけである)DBMLを編集するには

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

+0

ああ!右 - 私は "選択行"が欠けていた。固定 –

+0

DOH! LINQを使って作業するときに本当に助けてくれることが分かりますか? System.Linqを使用します。 –

2

さらに、保存された プロシージャの結果セットでlinqクエリ を実行するにはどうすればよいですか?

var query = from results in datacontext.storedprocedurename() 
      where results.whatever == 1 
      select results; 
関連する問題