gpt4 book ai didi

c# - LINQ 到 SQL : Stored Procedure Results

转载 作者:太空狗 更新时间:2023-10-29 21:15:58 26 4
gpt4 key购买 nike

如何更改 LINQ to 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>

关于c# - LINQ 到 SQL : Stored Procedure Results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/594775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com