Ich habe den folgenden Controller, der das Konto als der Eingabeparameter erhält, der mit dem Sql-Server verbindet und die gespeicherte Prozedur übergeben muss. Die gespeicherte Prozedur fügt einen neuen Datensatz ein wenn das Konto nicht vorhanden und Updates ist es, wenn bereits dortProblem beim Verbinden mit dem SQL-Server von Web API
string strcon = ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString;
SqlConnection DbConnection = new SqlConnection(strcon);
DbConnection.Open();
SqlCommand command = new SqlCommand("[dbo].[usp_InserUpadte]", DbConnection);
command.CommandType = CommandType.StoredProcedure;
//create type table
DataTable table = new DataTable();
table.Columns.Add("AccountID", typeof(string));
table.Rows.Add(Account);
SqlParameter parameter = command.Parameters.AddWithValue("@Account_TT", table);
parameter.SqlDbType = SqlDbType.Structured;
parameter.TypeName = "Account_TT";
Unterhalb der Connectionstring in web.config ist
<connectionStrings>
<add name="DBConnection"
providerName="System.Data.SqlClient"
connectionString="Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True" />
</connectionStrings>
die gespeicherte Prozedur ist wie
ALTER PROCEDURE [dbo].[usp_InserUpadte]
@account_TT AS account_TT READONLY
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION;
MERGE dbo.[Account] prj
USING @account_TT tt
ON prj.AccountID = tt.AccountID
WHEN MATCHED THEN UPDATE SET prj.CounterSeq = prj.CounterSeq+1
WHEN NOT MATCHED THEN INSERT (AccountID,CounterSeq)
VALUES (tt.AccountID, 1);
COMMIT TRANSACTION;
END;
wo der Tabellentyp mit
CREATE TYPE account_TT AS TABLE
(
AccountID nvarchar(50),
)
GO
erstellt wird, wenn ich versuche, die API es jede Ausnahme werfen aber doesnot nennen weder erstellt/aktualisiert werden alle Datensätze mit der gespeicherten Prozedur. Ich habe versucht, die hinzugefügten Breakpoints zu debuggen. Ich sehe das in
DbConnection.Open();
Sieht aus wie die Verbindung nicht geöffnet ist. Ich bin in der Lage, eine Verbindung mit dem SQL-Server von demselben Server aus herzustellen, an dem ich gerade arbeite, jedoch über SQL Management Studio. Kann mir bitte jemand vorschlagen, was das Problem sein könnte.
SQL Server 12.0.4436.0 – trx
Konnte Sie den Code einschließen, in dem Sie wirklich Ihren 'Befehl' ausführen? –
Fragen Sie nach dem API-Aufruf? – trx