从 C# 调用带参数的 As400 程序
Call As400 program with parameters from C#
我正在尝试使用参数从 C# 调用 AS400 程序。目前我可以这样调用程序
myRepository.Execute($"Call {Settings.As400ProgramLibrary}.EAPP100CL");
执行是我的 IRepository 接口的一部分
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);
}
告诉它执行时如何添加参数?
我看了 HERE 但想知道是否还有其他方法。
看起来您的调用字符串与您在 AS400 命令行中键入的字符串相同。如果是这样,那么您将在 CALL 命令中使用 PARM 关键字。
myRepository.Execute($"CALL PGM({Settings.As400ProgramLibrary}.EAPP100CL) PARM('{Parameter1}' '{Parameter2}')");
在此代码段中,我添加了单引号以将您的参数作为带引号的字符串传递,这通常是最简单的,但您也可以将值作为其他类型传递,例如 15,5 小数。我还明确添加了 PGM 关键字,尽管它经常在没有它的情况下工作(就像你的调用字符串一样)。
如需进一步参考,请参阅 CL 手册:CALL command
我正在尝试使用参数从 C# 调用 AS400 程序。目前我可以这样调用程序
myRepository.Execute($"Call {Settings.As400ProgramLibrary}.EAPP100CL");
执行是我的 IRepository 接口的一部分
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);
}
告诉它执行时如何添加参数? 我看了 HERE 但想知道是否还有其他方法。
看起来您的调用字符串与您在 AS400 命令行中键入的字符串相同。如果是这样,那么您将在 CALL 命令中使用 PARM 关键字。
myRepository.Execute($"CALL PGM({Settings.As400ProgramLibrary}.EAPP100CL) PARM('{Parameter1}' '{Parameter2}')");
在此代码段中,我添加了单引号以将您的参数作为带引号的字符串传递,这通常是最简单的,但您也可以将值作为其他类型传递,例如 15,5 小数。我还明确添加了 PGM 关键字,尽管它经常在没有它的情况下工作(就像你的调用字符串一样)。
如需进一步参考,请参阅 CL 手册:CALL command