Я пишу приложение ASP.NET (C #) в Visual Studio 2008 и подключаюсь к SQLExpress 2005.
При попытке обновить элемент управления FormView, связанный с SqlDataSource, с помощью параметризованной хранимой процедуры, я постоянно получаю экран с сообщением «слишком много аргументов указано».
Я попытался очистить список и добавить все параметры вручную перед вызовом метода DataSource.Update (). Я проверил с точкой останова, и непосредственно перед запуском метода Update коллекция UpdateParameters содержит 8 аргументов, которые я указал в своей хранимой процедуре, поэтому я знаю, что моя коллекция соответствует тому, что я просил.
Передача команд обновления типа = "text", содержащих оператор EXEC, будет работать, но мне нужно, чтобы она работала, вызывая саму процедуру.
Кто-нибудь еще сталкивался с этими "дополнительными аргументами" или я играю в EPR и гоняюсь за мнимыми переменными?
CREATE PROC spUpdateUserProfile
@UserNameVar nvarchar(256),
@DisplayNameVar varchar(30),
@FNameVar varchar(20),
@LNameVar varchar(20),
@EmailVar varchar(30)=NULL,
@LocationVar varchar(100)=NULL,
@BirthdateVar smalldatetime=NULL,
@BiographyVar varchar(2000)=NULL
AS
UPDATE UserProfile
SET UserDisplayName = @DisplayNameVar,
UserFName = @FNameVar,
UserLName = @LNameVar,
UserSharedEmail = @EmailVar,
UserLocation = @LocationVar,
UserDOB = @BirthdateVar,
UserBiography = @BiographyVar
WHERE UserProfile.UserID =
(SELECT UserProfile.UserID FROM UserProfile
JOIN aspnet_Users ON UserProfile.UserID = aspnet_Users.UserId
WHERE aspnet_Users.UserName = @UserNameVar)