首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Studio dataset designer在创建基于过程的表适配器时如何工作

Visual Studio dataset designer在创建基于过程的表适配器时如何工作
EN

Stack Overflow用户
提问于 2013-06-21 18:07:40
回答 1查看 417关注 0票数 0

我需要在Visual Studio 2010中更新数据集表适配器。它基于存储过程。存储过程具有参数

代码语言:javascript
复制
    @IDportfolio INT
,   @Date varchar(50)           = NULL
,   @IDorder int                = NULL
,   @IDsession nvarchar(300)    = NULL
,   @User varchar(100)          = NULL
,   @UDNsXML NVARCHAR(MAX)      = NULL
,   @DEBUG  INT                 = 0

表适配器具有以下方法:

代码语言:javascript
复制
Fill,GetData (@IDportfolio, @Date, @IDorder, @IDsession, @User, @UDN)

所以我需要刷新它。在该过程中,有一条IF语句只有在@DEBUG设置为1时才执行。在这条if语句中,有一些SELECT语句用于内部调试。在签名中可以看到,值1显然不是默认值,但是当设计器刷新方法时,它的行为就像是为@DEBUG参数发送值1。因此,它没有返回应该返回的值,而是返回了一组错误的值,设计器会尝试基于这些返回值创建方法。

为什么designer会这样工作,INT参数是否有一些默认值,或者他是否忽略了默认值?我也注意到了Entity Framework中类似的行为。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-21 23:06:08

好的,(VS)设计器需要确定发送的值(参数)和返回值(列和数据类型)。(以生成关联的类)。它使用可以松散地称为反射的东西。要做到这一点,存储过程必须符合某些规则,我发现了4条规则,不经意间,下面是3条重要的规则:

  • 只能返回一个行集(这是MS在某处明确声明的)
  • 行集必须在存储过程之外持久化,即它不能来自表变量。( MS在某处明确声明了这一点)
  • 它必须是确定性的。(这是MS在某处明确声明的)

使用debug参数,调用软件永远不会将该参数设置为1,这将允许您运行proc进行测试,并在存储过程中的不同点返回各种值。然而,对于VS设计器,因为这些行(默认情况下)不会返回,所以当VS分析时,proc仍然会运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17232613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档