参数类型“Edm.Int16”和“Edm.String”与此操作不兼容
Posted
技术标签:
【中文标题】参数类型“Edm.Int16”和“Edm.String”与此操作不兼容【英文标题】:The argument types 'Edm.Int16' and 'Edm.String' are incompatible for this operation 【发布时间】:2013-09-15 23:20:35 【问题描述】:我遇到了关于在 EntityDataSource 控件中连接具有不同类型的 2 个字段的错误。
我有一个由 EntityDataSource 填充的下拉列表,这个 ddl 显示每个项目的 Id,我必须对其进行修改以显示 id + description 的串联。
下面是ddl的第一个定义:
<asp:DropDownList ID="ddlScenarioID" runat="server" AutoPostBack="false"
DataSourceID="edsScenarioID" DataTextField="ScenarioID "
DataValueField="ScenarioID" Height="25px" Width="200px" EnableViewState="true"
onselectedindexchanged="ddlScenarioID_SelectedIndexChanged"
onchange="return ScenarioOnSelectedIndexChange();">
</asp:DropDownList>
以及实体数据源:
<asp:EntityDataSource ID="edsScenarioID" runat="server"
ConnectionString="name=StressTestEntities"
DefaultContainerName="StressTestEntities" EnableFlattening="False"
EntitySetName="Scenarios"
ContextTypeName="BDTTWebConsole.Models.EF.StressTestEntities"
Select="it.[ScenarioID]" OrderBy="it.[ScenarioID] ASC">
</asp:EntityDataSource>
我尝试将新的 DisplayText 属性添加为 ScenarioId 和 Description 的串联,但它不起作用。我收到一条错误消息(请参阅我的帖子标题)
这是entitydatasource的修改代码
<asp:EntityDataSource ID="edsScenarioID" runat="server"
ConnectionString="name=StressTestEntities"
DefaultContainerName="StressTestEntities" EnableFlattening="False"
EntitySetName="Scenarios"
ContextTypeName="BDTTWebConsole.Models.EF.StressTestEntities"
Select="it.[ScenarioID], it.[ScenarioID]+it.[Description] AS DisplayText " OrderBy="it. [ScenarioID] ASC">
</asp:EntityDataSource>
有人可以帮我解决这个问题吗?我是 c# 和 .net 的新手。
谢谢你
【问题讨论】:
我不确定asp:EntityDataSource
的选择语句中允许使用什么语法,但您是否尝试在连接之前将it.[ScenarioID]
转换为字符串?
感谢您的回复。我试过 Select="it.[ScenarioID] , cast(it.[ScenarioID] as varchar(4))+'-'+ it.[Description] as DisplayText" 但还是不行
解决方案是按照 Odyss-jii 的建议进行投射。 Select="it.[ScenarioID] , cast(it.[ScenarioID] as System.String)+'-'+ it.[Description] as DisplayText" 感谢您的帮助!
【参考方案1】:
cast(it.[ScenarioID] as System.String)
【讨论】:
以上是关于参数类型“Edm.Int16”和“Edm.String”与此操作不兼容的主要内容,如果未能解决你的问题,请参考以下文章