ОШИБКА Невозможно присвоить void неявно типизированной локальной переменной

У меня есть хранимые процедуры на сервере sql для вставки пользователя, но я получаю эту ошибку при попытке сопоставить sp с имеющимся у меня классом DTO.

DataClasses1DataContext _dataContext = new DataClasses1DataContext();

public List<WebUserDTO> InsertUser (string Username, string UserPassword, string FullName, string Email)
    {
        var user = _dataContext.WebUser_InsertUser(Username, UserPassword, FullName, Email);
        return user.Select(aux => new WebUserDTO()
        {
            UserName = aux.Username,
            UserPassword = aux.UserPassword,
            FullName = aux.FullName,
            Email = aux.Email
        }).ToList();
    }

Здесь отображается ошибка: var user = _dataContext.WebUser_InsertUser(Username, UserPassword, FullName, Email); Мои инструкции вставки следующие, и у меня есть правильные результаты при выполнении dbo.WebUser_InsertUser на сервере sql

CREATE PROC dbo.WebUser_InsertUser0
    @Username AS NVARCHAR (20),
    @UserPassword AS NVARCHAR (20),
    @FullName AS NVARCHAR (50),
    @Email AS NVARCHAR (50),
    @IdUser AS INT OUT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO dbo.WebUser (UserName, UserPassword, FullName, Email)
VALUES (@UserName, @UserPassword, @FullName, @Email)
SET @IdUser = SCOPE_IDENTITY()
RETURN @IdUser;
END
GO

CREATE PROC dbo.WebUser_InsertUser
    @Username1 AS NVARCHAR (20),
    @UserPassword1 AS NVARCHAR (20),
    @FullName1 AS NVARCHAR (50),
    @Email1 AS NVARCHAR (50)
AS
BEGIN
SET NOCOUNT ON;
DECLARE
    @UserId1 AS INT
EXEC dbo.WebUser_InsertUser @UserName1, @UserPassword1, @FullName1, @Email1, @UserId1 OUT
SELECT W.IdUser, W.UserTypeId, W.Username, W.UserPassword, W.FullName, W.Email
FROM dbo.WebUser AS W
WHERE W.IdUser = @UserId1
RETURN;
END

Можете ли вы опубликовать больше окружающего кода? Также посмотрите здесь. stackoverflow.com/questions/22814302/…

Patrick Goode 02.05.2018 02:11

Тип переменной должен быть неявным из контекста. То, что вы не вводите имя типа, не означает, что компилятор в любой момент остановится для проверки типов! Если вы хотите избавиться от проверок типов во время компиляции, используйте динамический (или лучше измените свой дизайн, чтобы у вас тоже не было). Проблема, вероятно, в том, что WebUser_InsertUser возвращает void (или, по крайней мере, одна перегрузка). Не зная подробностей этого класса, это лучшее предположение, которое я получил.

Christopher 02.05.2018 02:11

Какой тип возврата метода var user = _dataContext.WebUser_InsertUser?

Chetan Ranpariya 02.05.2018 02:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
721
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Скорее всего вам понадобится что-то вроде этого:

public List<WebUserDTO> InsertUser (string Username, string UserPassword, string FullName, string Email)
{
    _dataContext.WebUser_InsertUser(Username, UserPassword, FullName, Email);
    // since you did not provide _dataContext type definition
    // I can only guess how your user collection is called in your DbContext.
    return _dataContext.users.Select(aux => new WebUserDTO()
    {
        UserName = aux.Username,
        UserPassword = aux.UserPassword,
        FullName = aux.FullName,
        Email = aux.Email
    }).ToList();
}

Спасибо! Наконец-то сработало, проблема заключалась в возвращаемом типе моей хранимой процедуры, которую я смог изменить на WebUser из дизайнера

leandrogmq 03.05.2018 03:01

Другие вопросы по теме