【发布时间】:2018-07-02 04:27:35
【问题描述】:
我遇到了一个问题,我无法将值对象从 C# 映射到参数过程 Oracle。
在 Oracle 中我有这个结构:
CREATE OR REPLACE TYPE EMPMLOY AS OBJECT
(
FNAME VARCHAR2 (20),
LNAME VARCHAR2 (20)
);
CREATE OR REPLACE PROCEDURE PROC_INSEMPLOY(P1 EMPMLOY)
IS
V_EMPLOY EMPMLOY;
BEGIN
V_EMPLOY := P1;
INSERT INTO MANAGE_EMPLYEE
VALUES (V_EMPLOY.FNAME, V_EMPLOY.LNAME);
END;
在 C# 中的代码是这样的:
[OracleCustomTypeMapping("EMPMLOY")]
public class Employ
{
[OracleObjectMapping("FNAME")]
public string Fname { get; set; }
[OracleObjectMapping("LNAME")]
public string Lname { get; set; }
}
using (var conn = new OracleConnection(cs))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
var employ = new Employ
{
Fname = "Thuy",
Lname = "Tran"
};
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "PROC_INSEMPLOY";
var param = new OracleParameter
{
ParameterName = "P1",
Direction = ParameterDirection.Input,
OracleDbType = OracleDbType.Object,
UdtTypeName = "EMPMLOY",
Value = employ
};
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
}
}
我收到一个错误
参数绑定参数名无效
请帮我解决这个问题。提前致谢!
【问题讨论】: