Как исправить исполняемый файл, не имеющий вывода - PullRequest
0 голосов
/ 23 июня 2019

Я использую asp.net MVC для создания приложения, которое рассчитывает, могут ли несколько политических партий работать вместе, чтобы сформировать легитимную коалицию. (Есть большинство). Когда я создаю коалицию, мне нужно вернуть идентификатор коалиции, который является автоматическим приращением. Я пытаюсь использовать функцию ExecuteScalar () - для вывода идентификатора. В хранимой процедуре я ограничиваю идентичность.

Также пробовал Output Inserted.ID

Код, в котором я пытаюсь вернуть идентификатор:

public int AddNewCoalition(Coalition coalition)
{
    try
    {
        _conn.Open();
        using (SqlCommand cmd = new SqlCommand("MakeCoalition", _conn))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@CoalitionName", SqlDbType.NChar).Value = coalition.CoalitionName;
            cmd.Parameters.AddWithValue("@DateOfFormation", SqlDbType.DateTime).Value = coalition.DateOfFormation;
            Int32 result = (Int32)cmd.ExecuteScalar();
            return (int)result;
        }
    }
    catch (Exception)
    {

        throw;
    }
    finally
    {
        _conn.Close();
    }
}

Код, где я пытаюсь выполнить метод:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult CreateNewCoalition(CoalitionViewModel coalition)
        {
            try
            {
                _coalitionLogic.AddNewCoalition(new Coalition(coalition.CoalitionName, coalition.DateOfFormation));

                return RedirectToAction("AddPoliticalPartiesToCoalition", coalition);
            }
            catch (Exception)
            {
                return View("../Shared/Error");
            }
        }

Хранимая процедура для определения личности:

CREATE PROCEDURE [dbo].[MakeCoalition]
    @CoalitionName NVarchar(255),
    @DateOfFormation DateTime
AS
BEGIN
INSERT INTO [Coalition]
([Name], [DateOfFormation])
VALUES
(@CoalitionName, @DateOfFormation)
SELECT CAST(scope_identity() AS int)
END

Таблица коалиции:

CREATE TABLE [dbo].[Coalition] (
    [CoalitionId]     INT            IDENTITY (1, 1) NOT NULL,
    [Name]            NVARCHAR (255) NOT NULL,
    [PrimeMinisterId] INT            NULL,
    [Seats]           INT            NULL,
    [DateOfFormation] DATETIME       NOT NULL,
    [EnoughSeats]     BIT            NULL,
    PRIMARY KEY CLUSTERED ([CoalitionId] ASC)
);

Ожидается, что результатом будет Id только что созданной коалиции, но он продолжает возвращаться 0

...