我需要在Visual Studio 2010中更新数据集表适配器。它基于存储过程。存储过程具有参数
@IDportfolio INT
, @Date varchar(50) = NULL
, @IDorder int = NULL
, @IDsession nvarchar(300) = NULL
, @User varchar(100) = NULL
, @UDNsXML NVARCHAR(MAX) = NULL
, @DEBUG INT = 0表适配器具有以下方法:
Fill,GetData (@IDportfolio, @Date, @IDorder, @IDsession, @User, @UDN)所以我需要刷新它。在该过程中,有一条IF语句只有在@DEBUG设置为1时才执行。在这条if语句中,有一些SELECT语句用于内部调试。在签名中可以看到,值1显然不是默认值,但是当设计器刷新方法时,它的行为就像是为@DEBUG参数发送值1。因此,它没有返回应该返回的值,而是返回了一组错误的值,设计器会尝试基于这些返回值创建方法。
为什么designer会这样工作,INT参数是否有一些默认值,或者他是否忽略了默认值?我也注意到了Entity Framework中类似的行为。
发布于 2013-06-21 23:06:08
好的,(VS)设计器需要确定发送的值(参数)和返回值(列和数据类型)。(以生成关联的类)。它使用可以松散地称为反射的东西。要做到这一点,存储过程必须符合某些规则,我发现了4条规则,不经意间,下面是3条重要的规则:
使用debug参数,调用软件永远不会将该参数设置为1,这将允许您运行proc进行测试,并在存储过程中的不同点返回各种值。然而,对于VS设计器,因为这些行(默认情况下)不会返回,所以当VS分析时,proc仍然会运行。
https://stackoverflow.com/questions/17232613
复制相似问题