C# 实体框架无法从Oracle存储过程映射出参数
我正在用一个输入参数和一个输出参数为Oracle数据库中的Insert创建存储过程 这是我的存储过程(从现在开始就简单了) 此输出参数(数字类型)应将刚刚插入的主键返回到C代码 下面是我的C#代码(即借助MapToStoredProcess),它使用EF6调用INSERT_EMPLOYEE stored proc并尝试获取OUT参数中的值(本例中为OUT_EMPLOYEE_ID) 这是我的Employee实体类,EmpoyeId作为Int64(long)类型的主键 但我发现类型不匹配问题如下:C# 实体框架无法从Oracle存储过程映射出参数,c#,oracle,stored-procedures,oracle11g,entity-framework-6,C#,Oracle,Stored Procedures,Oracle11g,Entity Framework 6,我正在用一个输入参数和一个输出参数为Oracle数据库中的Insert创建存储过程 这是我的存储过程(从现在开始就简单了) 此输出参数(数字类型)应将刚刚插入的主键返回到C代码 下面是我的C#代码(即借助MapToStoredProcess),它使用EF6调用INSERT_EMPLOYEE stored proc并尝试获取OUT参数中的值(本例中为OUT_EMPLOYEE_ID) 这是我的Employee实体类,EmpoyeId作为Int64(long)类型的主键 但我发现类型不匹配问题如下:
"innerException": {
"message": "An error has occurred.",
"exceptionMessage": "ORA-06550: line 1, column 8:\nPLS-00306: wrong number or types of arguments in call to 'INSERT_EMPLOYEE'\nORA-06550: line 1, column 8:\nPL/SQL: Statement ignored"
}
如果主键字段的类型为string,而存储过程中的OUT param的类型为nvarchar2,则同样可以正常工作
任何解决方案都将受到高度赞赏
ToTable("ADVENTUREWORKS.EMPLOYEE");
HasKey(model => model.EmployeeId);
// Property Mappings
Property(model => model.EmployeeId).HasColumnName("EMPLOYEE_ID").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
Property(model => model.EmployeeName).HasColumnName("EMPLOYEE_NAME");
// Configure Stored Procedures
this.MapToStoredProcedures(p =>
{
p.Insert(sp =>
sp.HasName("ADVENTUREWORKS.INSERT_EMPLOYEE").Parameter(b => b.EmployeeName, "p_employee_name")
.Result(re => re.EmployeeId, "OUT_EMPLOYEE_ID")
);
});
public class Employee
{
public long EmployeeId { get; set; }
public string EmployeeName { get; set; }
}
"innerException": {
"message": "An error has occurred.",
"exceptionMessage": "ORA-06550: line 1, column 8:\nPLS-00306: wrong number or types of arguments in call to 'INSERT_EMPLOYEE'\nORA-06550: line 1, column 8:\nPL/SQL: Statement ignored"
}