Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Orm 如何将存储过程映射中的数字类型转换为实体框架4中的复杂类型?_Orm_C# 4.0_Entity Framework 4 - Fatal编程技术网

Orm 如何将存储过程映射中的数字类型转换为实体框架4中的复杂类型?

Orm 如何将存储过程映射中的数字类型转换为实体框架4中的复杂类型?,orm,c#-4.0,entity-framework-4,Orm,C# 4.0,Entity Framework 4,我们在Microsoft SQL Server中有两个存储过程,它们返回概念上相同类型的数据。一个返回一个ID作为SCOPE_TDENTITY()(一个数字),而另一个返回0(一个int32)。我们有一个属性ID为的复杂类型。如果此属性是可为空的十进制数,则在枚举返回int32的存储过程的结果时会收到以下错误: The 'ID' property on 'EntitryRequestReturn' could not be set to a 'Int32' value. You must set

我们在Microsoft SQL Server中有两个存储过程,它们返回概念上相同类型的数据。一个返回一个ID作为SCOPE_TDENTITY()(一个数字),而另一个返回0(一个int32)。我们有一个属性ID为的复杂类型。如果此属性是可为空的十进制数,则在枚举返回int32的存储过程的结果时会收到以下错误:

The 'ID' property on 'EntitryRequestReturn' could not be set to a 'Int32' value. You must set this property to a non-null value of type 'Decimal'.
将属性类型更改为int32只会将错误移动到其他存储过程,数据类型按相反顺序列出。更改类型是否可为null没有任何区别


在构造复杂类型时,如何让EF4将存储过程返回的int列转换为十进制?

这在我的实例中有效。这可能会有帮助

如果存储过程通过select语句返回数据,则强制转换所有返回字段会有很大帮助,即使它们是本机数据类型

select convert(int, myInt) as myInt

select myInt
很多时候,我的SPs会将字符串显示为最后一个字段,而实际上它是一个Int32。我在所有字段中添加了convert语句,它再也没有犯过这样的错误


也就是说,您只需在SP中进行转换,然后再将其发送到EF。

这在我的实例中有效。这可能会有帮助

如果存储过程通过select语句返回数据,则强制转换所有返回字段会有很大帮助,即使它们是本机数据类型

select convert(int, myInt) as myInt

select myInt
很多时候,我的SPs会将字符串显示为最后一个字段,而实际上它是一个Int32。我在所有字段中添加了convert语句,它再也没有犯过这样的错误


也就是说,您可以在SP发送到EF之前在SP中进行转换。

我们就是这么做的。我们的大多数问题都是由SCOPE_标识引起的,我们现在将其作为一个整数丢弃。为了使用EF,我们将更改返回类型的存储过程视为bug,并修复存储过程。这就是我们所做的。我们的大多数问题都是由SCOPE_标识引起的,我们现在将其作为一个整数丢弃。为了使用EF,我们将更改返回类型的存储过程视为bug,并修复存储过程。