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