c# - 为什么 Entity Framework 在存储过程 MyProp 和 MyProp1 中创建一个带有附加数字的属性?
问题描述
我的存储过程返回各种列,它不是可变的,结果总是固定的。
当我在 Entity Framework 中按“获取列信息”时,所有列都正确显示在预览窗口中,包括MyProp
.
然而,当我按下创建复杂类型时,它最终会出现
string MyProp {get; set;}
string MyProp1 {get; set;}
在复杂类型类中的所有其他字段中。
发生这种情况有原因吗?不应该有 MyProp1。其余的列都很好。
预计到达时间:
edmx 中没有什么异常。在 sproc 中返回了多个相同类型 ( nvarchar(30)
) 的东西。edmx 的格式与 MyProp 相同。我看不到任何冲突,例如有一个与属性同名的类或类似的东西。
我已将字段名称设为空白,但MyProp
它是与其他字段一样被检测到的字段之一,它只出现一次,没有名称冲突等,但输出 .cs 文件的两倍MyProp
和MyProp1
解决方案
把头发扯了一会儿,我已经修好了。
列的类型是nvarchar(30) null
在存储过程中,我从字段为 的表中填充它nvarchar(20) null
,基本上我的存储过程是这段代码(简化,可能不是 100% 准确):
DECLARE @Results TABLE (
[MyProp] [nvarchar](30) Null
)
Insert Into @Results
Select [MyProp] from MyTable
SELECT * From @Results
在MyTable
,MyProp
实际上是nvarchar(20) Null
而不是nvarchar(30) Null
。
因此,即使没有精度损失,因为它更小,但出于某种原因,EF 似乎正在检查表的填充方式并创建一个额外的字段。我不知道为什么,但是将 MyProp 更改nvarchar(20) Null
为匹配它正在填充的表已经修复了它。
莫名其妙。
推荐阅读
- javascript - Ionic 3 未在图像 src 中显示相机 FILE_URI 路径
- jmeter - 通过 jmeter 没有响应,但通过 POSTMAN 对相同的 REST API 做出正确响应
- plc - 如何使用 OPCAutomation.dll 检查 plc 设备是否断开连接
- java - 无法通过代理调用 API
- rest - 从 Office365 Graph API 中的字符串设置消息
- jquery - 用 jquery 触发按键不起作用
- c# - GC 的 Xamarin 调试输出的含义
- xml - 相对路径在 WIX 和 XML 中不起作用并显示错误“系统找不到文件”
- electron - Theia 的 Electron 示例不运行
- signing - 使用 iText7 签名的 PDF/A 允许在不破坏签名的情况下更改附加文档