Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 不存在从对象类型System.RuntimeType到已知托管提供程序本机类型的映射_Entity Framework - Fatal编程技术网

Entity framework 不存在从对象类型System.RuntimeType到已知托管提供程序本机类型的映射

Entity framework 不存在从对象类型System.RuntimeType到已知托管提供程序本机类型的映射,entity-framework,Entity Framework,我有一个带有签名的存储过程 PROCEDURE [dbo].[spValidateID] @ScanCode VARCHAR(50), @Name VARCHAR(50) = NULL OUTPUT, @ScanTime DATETIME = NULL OUTPUT, @ValidationCode INT = 0 OUTPUT 这将返回一个validationCode,并填充name和scanTime变量。 我需要在

我有一个带有签名的存储过程

PROCEDURE [dbo].[spValidateID]
    @ScanCode       VARCHAR(50),
    @Name           VARCHAR(50) = NULL OUTPUT,
    @ScanTime       DATETIME = NULL OUTPUT,
    @ValidationCode INT = 0 OUTPUT
这将返回一个validationCode,并填充name和scanTime变量。 我需要在调用时给它扫描码值

在我的C代码中,我是这样做的

using (var context = new DBEntities())
{
    var pScanCode = new SqlParameter("ScanCode", scanCode);
    var opName = new SqlParameter("Name", name);
    var opScanTime = new SqlParameter("ScanTime", scanTime);
    var opValidationCode = new SqlParameter("ValidationCode", validationCode);

    var test = context.ExecuteStoreQuery<int>("spValidateID @ScanCode, @Name, @ScanTime, @ValidationCode", pScanCode, opName, opScanTime, opValidationCode);
}
使用(var context=new DBEntities())
{
var pScanCode=新的SqlParameter(“扫描代码”,扫描代码);
var opName=新的SqlParameter(“Name”,Name);
var opScanTime=新的SqlParameter(“ScanTime”,ScanTime);
var opValidationCode=新的SqlParameter(“ValidationCode”,ValidationCode);
var test=context.ExecuteStoreQuery(“spValidateID@ScanCode、@Name、@ScanTime、@ValidationCode”、pScanCode、opName、opScanTime、opValidationCode);
}
但是在运行这个程序时,我发现了一个错误 不存在从对象类型System.RuntimeType到已知托管提供程序本机类型的映射


知道吗???

您缺少sqlparameters和@的输出设置。您的代码应该如下所示:

SqlParameter pScanCode = new SqlParameter("@ScanCode", ScanCode);
SqlParameter opName = new SqlParameter("@Name", name);
opName.Direction = System.Data.ParameterDirection.Output;   //Important!
SqlParameter opScanTime = new SqlParameter("@ScanTime", scanTime);
opScanTime.Direction = System.Data.ParameterDirection.Output;   //Important!
SqlParameter opValidationCode = new SqlParameter("@ValidationCode ", validationCode);
opValidationCode.Direction = System.Data.ParameterDirection.Output;   //Important!

ExecuteStoreQuery将错误显示为不包含定义。