Wie führe ich eine gespeicherte Prozedur in ADO.NET Entity Framework aus?

.net c# entity-framework linq-to-sql

Frage

Wie verwende ich gespeicherte Prozedur in ADO.NET Entity Framework?

Mein Tisch: Mein Kunde

Columns:
CustomerID    PK   int 
Name               nvarchar(50)
SurName            nvarchar(50)

Meine gespeicherte Prozedur

ALTER procedure [dbo].[proc_MyCustomerAdd]
(@Name nvarchar(50),
@SurName nvarchar(50)
)
as 
begin
  insert into dbo.MyCustomer([Name], SurName) values(@name,@surname)
end

Mein C # -Code

private void btnSave_Click(object sender, EventArgs e)
{
   entityContext.MyCustomerAdd(textName.Text.Trim(), textSurName.Text.Trim());
   entityContext.SaveChanges();
}

Der Fehler:

Der Datenleser ist mit dem angegebenen 'TestAdonetEntity2Model.MyCustomer' nicht kompatibel. Ein Member des Typs "CustomerID" hat keine entsprechende Spalte im Datenleser mit demselben Namen.

Unter der letzten Codezeile ist ein Fehler aufgetreten (Aufruf von ExecuteFunction):

global::System.Data.Objects.ObjectParameter surNameParameter;
if ((surName != null))
{
   surNameParameter = new global::System.Data.Objects.ObjectParameter("SurName", surName);
}
else
{
   surNameParameter = new global::System.Data.Objects.ObjectParameter("SurName", typeof(string));
}
<b>return base.ExecuteFunction<MyCustomer>("MyCustomerAdd", nameParameter, surNameParameter);</b>

Hinzugefügt ist ok Jeder hinzugefügte Vorgang ist in Ordnung. Nach der Bearbeitung tritt der obige Fehler auf.

Akzeptierte Antwort

Ich denke, was Sie brauchen, um einen Funktionsimport mit dem EF-Tooling durchzuführen und die importierte Funktion aufzurufen

DataContext.MyFunctionName(storedProcedureParamer1, storedProcedureParamer2)

Vorgehensweise: Importieren einer gespeicherten Prozedur


Beliebte Antwort

Um gespeicherte Prozeduren für Abfrageoperationen aufzurufen, können Sie SqlQuery in Entityframework verwenden, was sehr hilfreich ist

_dbContext.Database.SqlQuery<EntityType>("sp_name",parameters).ToList();

Für Executenonquery-Operationen (Transaktionen) können Sie verwenden

_dbContext.Database.ExecuteSqlCommand( 
                    @"UPDATE tblname SET Rating = 5" + 
                        " WHERE Name LIKE '%Entity Framework%'" 
                    );

Beachten Sie, dass das _dbContext-Objekt Ihrer Context-Klasse von der DbContext-Klasse von Entityframework erbt



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum