Ich habe also eine gespeicherte Prozedur namens Spr_EventLogCreate in meiner Datenbank definiert. Ich habe in meinem Datenmodell einen Funktionsimport mit dem Namen LogEvent ohne Rückgabetyp erstellt. Diese Funktion kann in der Modellbrowser-Struktur unter angezeigt werden
MyModel.edmx> MyModel> EntityContainer> Import von Funktionen> LogEvent.
Ich dachte, ich sollte die Funktion dann wie folgt in meinem Code aufrufen können:
var context = new MyModelEntities();
context.LogEvent(...);
Die Methode LogEvent () ist jedoch nicht vorhanden.
Ich muss hier wirklich dumm sein, aber wie rufe ich meine importierte Funktion auf?
Verwendung von VS 2008 und EF 3.5.
Es gibt keine Möglichkeit, den Code zu generieren, der die Funktion aufruft, und eine Ergebnismenge nicht vom Entwurfszeitpunkt im Microsoft-Standarddesigner abzustimmen. Sie können Code schreiben, der ihn manuell in der Teildefinition Ihrer Kontextklasse aufruft. Hier ist ein Beispiel:
public void EmpDelete (global::System.Nullable PEMPNO, global::System.Nullable PDEPTNO)
{
if (this.Connection.State != System.Data.ConnectionState.Open)
this.Connection.Open();
System.Data.EntityClient.EntityCommand command = new System.Data.EntityClient.EntityCommand();
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandText = @"DataSourceModel1Entities.EmpDelete";
command.Connection = (System.Data.EntityClient.EntityConnection)this.Connection;
EntityParameter PEMPNOParameter = new EntityParameter("PEMPNO", System.Data.DbType.Decimal);
if (PEMPNO.HasValue)
PEMPNOParameter.Value = PEMPNO;
command.Parameters.Add(PEMPNOParameter);
EntityParameter PDEPTNOParameter = new EntityParameter("PDEPTNO", System.Data.DbType.Decimal);
if (PDEPTNO.HasValue)
PDEPTNOParameter.Value = PDEPTNO;
command.Parameters.Add(PDEPTNOParameter);
command.ExecuteNonQuery();
}