Я использую 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