2017-09-22 1 views
1

Ich versuche, ein AS400-Programm von C# mit Parametern aufzurufen. Im Moment bin ich in der Lage Programme zu nennen wie soCall As400 Programm mit Parametern von C#

myRepository.Execute($"Call {Settings.As400ProgramLibrary}.EAPP100CL"); 

Der Teil meines IRepository Schnittstelle auszuführen ist

public interface IRepository<T> : IReadOnlyRepository<T> where T : class 
    { 
     void Add(T item); 
     void Add(IEnumerable<T> items); 
     void Attach(T item); 
     void EnrollInUnitOfWork(IUnitOfWork unitOfWork); 
     int Execute(string command, params object[] parameters); 
     IEnumerable<T> ExecWithStoreProcedure(string query, params object[] parameters); 
     IQueryable<T> FindBy(Func<T, bool> predicate); 
     IQueryable<T> FindBy(Func<T, bool> predicate, params Expression<Func<T, object>>[] includes); 
     void Remove(T item); 
     void Remove(IEnumerable<T> items); 
     void Update(T item); 
    } 

Wie würde ich Parameter hinzufügen, wenn sie sagen, auszuführen? Ich sah HERE aber fragte mich, ob es einen anderen Weg gibt.

Antwort

1

Es sieht so aus, als ob Ihre Aufrufzeichenfolge mit dem übereinstimmt, was Sie in der AS400-Befehlszeile eingeben würden. Wenn dies der Fall ist, würden Sie das Schlüsselwort PARM für den Befehl CALL verwenden.

myRepository.Execute($"CALL PGM({Settings.As400ProgramLibrary}.EAPP100CL) PARM('{Parameter1}' '{Parameter2}')"); 

In diesem Snippet habe ich einfache Anführungszeichen hinzugefügt Ihre Parameter als Strings in Anführungszeichen zu übergeben, die oft ist die einfachste, obwohl Sie auch Werte wie andere Arten, wie ein 15,5 dezimal passieren können. Ich habe auch explizit das Schlüsselwort PGM hinzugefügt, obwohl es oft ohne es funktioniert (wie Ihre Aufrufzeichenfolge hatte).

Für weitere Referenz siehe das CL-Handbuch: CALL command