Suche…


Führen Sie einen Befehl aus, der keine Ergebnisse zurückgibt

IDBConnection db = /* ... */  
var id = /* ... */

db.Execute(@"update dbo.Dogs set Name = 'Beowoof' where Id = @id",
   new { id });

Gespeicherte Prozeduren

Einfache Benutzung

Dapper unterstützt gespeicherte Prozeduren vollständig:

var user = conn.Query<User>("spGetUser", new { Id = 1 }, 
                            commandType: CommandType.StoredProcedure)
           .SingleOrDefault();

Input-, Output- und Return-Parameter

Wenn Sie etwas mehr Lust haben wollen, können Sie:

var p = new DynamicParameters();
p.Add("@a", 11);
p.Add("@b", 
      dbType: DbType.Int32, 
      direction: ParameterDirection.Output);
p.Add("@c", 
      dbType: DbType.Int32, 
      direction: ParameterDirection.ReturnValue);

conn.Execute("spMagicProc", p, 
             commandType: CommandType.StoredProcedure); 

var b = p.Get<int>("@b");
var c = p.Get<int>("@c"); 

Tabellenwertparameter

Wenn Sie über eine gespeicherte Prozedur verfügen, die einen Tabellenwertparameter akzeptiert, müssen Sie eine DataTable übergeben, die dieselbe Struktur wie der Tabellentyp in SQL Server hat. Hier ist eine Definition für einen Tabellentyp und eine Prozedur, die diese verwenden:

CREATE TYPE [dbo].[myUDTT] AS TABLE([i1] [int] NOT NULL);
GO
CREATE PROCEDURE myProc(@data dbo.myUDTT readonly) AS
SELECT i1 FROM @data;
GO
/*
-- optionally grant permissions as needed, depending on the user you execute this with.
-- Especially the GRANT EXECUTE ON TYPE is often overlooked and can cause problems if omitted.
GRANT EXECUTE ON TYPE::[dbo].[myUDTT] TO [user];
GRANT EXECUTE ON dbo.myProc TO [user];
GO
*/

Um diese Prozedur in c # aufzurufen, müssen Sie Folgendes tun:

// Build a DataTable with one int column
DataTable data = new DataTable();
data.Columns.Add("i1", typeof(int));
// Add two rows
data.Rows.Add(1);
data.Rows.Add(2);

var q = conn.Query("myProc", new {data}, commandType: CommandType.StoredProcedure);


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow