gpt4 book ai didi

linq-to-sql - LINQ to SQL —无法修改存储过程的返回类型

转载 作者:行者123 更新时间:2023-12-03 12:02:40 24 4
gpt4 key购买 nike

当我将特定的存储过程拖到VS 2008 dbml设计器中时,它的返回类型设置为“none”,并且它是只读的,因此无法更改。设计器代码将其显示为返回int,如果我手动更改它,则在下一个构建中将被撤消。

但是,使用另一个(几乎相同的)存储过程,我可以将返回类型更改得很好(从“自动生成的类型”更改为我想要的类型)。

我在两台单独的机器上遇到了这个问题。知道发生了什么吗?

这是有效的存储过程:

USE [studio]
GO
/****** Object: StoredProcedure [dbo].[GetCourseAnnouncements] Script Date: 05/29/2009 09:44:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[GetCourseAnnouncements]
@course int
AS
SELECT * FROM Announcements WHERE Announcements.course = @course
RETURN

而且这个没有:
USE [studio]
GO
/****** Object: StoredProcedure [dbo].[GetCourseAssignments] Script Date: 05/29/2009 09:45:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO
CREATE PROCEDURE [dbo].[GetCourseAssignments]
@course int
AS
SELECT * FROM Assignments WHERE Assignments.course = @course ORDER BY date_due ASC
RETURN

最佳答案

我也多次看到此问题,虽然我不知道是什么原因造成的,但我遇到了一种非常简单的解决方法。它涉及到手动编辑.dbml文件中的xml,但这是一个非常简单的编辑。

在解决方案资源管理器中右键单击数据上下文的.dbml文件(不是.layout文件也不是designer.cs文件),然后使用XML编辑器将其打开。您应该在 <Function> ... </Function> 块中找到您的存储过程。您还应该在 <Type> ... </Type> 块中找到要设置为返回类型的自定义类。

第一步是给您的自定义类一个标识符。您可以通过添加“Id”标记(例如这样)来确保它在dbml文件中是唯一的:

<Type Name="MyCustomClass" Id="ID1">

第二步是告诉您的函数使用新标识的类型作为返回类型。您可以通过替换 <Function>块中看起来像这样的行来实现
<Return Type="System.Int32" />


<ElementType IdRef="ID1" />

保存文件,退出并重建。做完了在设计模式下重新打开.dbml文件以验证:您的过程现在将自定义类设置为Return Type。

关于linq-to-sql - LINQ to SQL —无法修改存储过程的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/927006/

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