我对Entity Framework功能导入有一个有趣的问题。我从MS SQL Server 2008 R2导入存储过程,它只返回一个字符串。但是,对于EF来说,推断这个返回类型太复杂了,所以在定义函数import时我必须手动指定该函数返回一组标量(ObjectResult<global::System.String>
,如生成的那样)。
有时,该过程返回一个仅包含数字且从零开始的字符串(例如01234
)。当我在代码中访问此结果时,结果是没有起始零(1234
)!
我知道几种解决方法,所以这不是一个问题。我想了解发生了什么。
我的猜测是,在我的情况下 - 当SP太复杂而无法“预测”其结果时 - EF首先尝试按照该数据的格式“猜测”返回数据的类型。即,它看到一个数字(01234
),并将其转换为整数类型(int
,short
- 无论如何)。然后它看到我想要string
,并将此数字转换回string
,但当然在这些转换过程中,零开始会丢失。这是真的,还是有更好的解释?
更新:这是功能导入的屏幕截图: