Entity Framework - 不支持列类型 'ColumnName'。类型是 'Object'
Entity Framework - The type of column 'ColumnName' is not supported. The type is 'Object'
我6个月前写了一段代码,运行良好,部署在多个环境中。我现在有了一个新的增强功能,当我尝试 运行 相同的代码时,奇怪的是它给了我一个错误。我在网上搜索但没什么帮助。以下是关注的代码:
var parameter = new SqlParameter("@SearchCriteria", SqlDbType.Structured);
parameter.Value = searchCriteria;
parameter.TypeName = "dbo.SearchCriteria";
var output = entities.Database.SqlQuery<tablename>(
"dbo.storedprocedureName @SearchCriteria",
parameter).ToList<tablename>();
它给我错误
The type of column 'SelectedValue' is not supported. The type is 'Object'.
相同的部署代码仍在 运行ning 在其他服务器上,没有任何问题。不确定我的电脑发生了什么变化!!
我的Table类型定义:
CREATE TYPE [dbo].[SearchCriteria] AS TABLE(
[SelectedAttribute] [varchar](50) NULL,
[SelectedCriteria] [varchar](50) NULL,
[SelectedValue] [varchar](50) NULL)
我相信这个错误不是来自存储过程,而是来自 ADO.NET / Entity Framework 甚至在调用存储过程之前。我使用 SQL 配置文件进行了跟踪,因此该调用从未打到数据库。我尝试直接在 SSMS 上 运行 SP,SP 工作正常。所以,我可以看出它与 Entity Framework 或 ADO.NET.
有关系
我在 C# 中有一个对象,它存储 SearchCriteria 并在使用 EF 发送到存储过程之前转换为 DataTable。
其中一个字段 "SelectedValue" 被声明为 "Object"。我将其更改为 "string",一切正常。
我完全不知道这段代码到目前为止是如何工作的,为什么现在坏了!!我是编写它的人,现在也是我修改它的人,所以中间人也不会更改 :)
旧Class:
public class SelectionCriteria
{
public string SelectedAttribute { get; set; }
public string SelectedCriteria { get; set; }
public object SelectedValue { get; set; }
}
已修改 Class:
public class SelectionCriteria
{
public string SelectedAttribute { get; set; }
public string SelectedCriteria { get; set; }
public string SelectedValue { get; set; }
}
我6个月前写了一段代码,运行良好,部署在多个环境中。我现在有了一个新的增强功能,当我尝试 运行 相同的代码时,奇怪的是它给了我一个错误。我在网上搜索但没什么帮助。以下是关注的代码:
var parameter = new SqlParameter("@SearchCriteria", SqlDbType.Structured);
parameter.Value = searchCriteria;
parameter.TypeName = "dbo.SearchCriteria";
var output = entities.Database.SqlQuery<tablename>(
"dbo.storedprocedureName @SearchCriteria",
parameter).ToList<tablename>();
它给我错误
The type of column 'SelectedValue' is not supported. The type is 'Object'.
相同的部署代码仍在 运行ning 在其他服务器上,没有任何问题。不确定我的电脑发生了什么变化!!
我的Table类型定义:
CREATE TYPE [dbo].[SearchCriteria] AS TABLE(
[SelectedAttribute] [varchar](50) NULL,
[SelectedCriteria] [varchar](50) NULL,
[SelectedValue] [varchar](50) NULL)
我相信这个错误不是来自存储过程,而是来自 ADO.NET / Entity Framework 甚至在调用存储过程之前。我使用 SQL 配置文件进行了跟踪,因此该调用从未打到数据库。我尝试直接在 SSMS 上 运行 SP,SP 工作正常。所以,我可以看出它与 Entity Framework 或 ADO.NET.
有关系我在 C# 中有一个对象,它存储 SearchCriteria 并在使用 EF 发送到存储过程之前转换为 DataTable。
其中一个字段 "SelectedValue" 被声明为 "Object"。我将其更改为 "string",一切正常。
我完全不知道这段代码到目前为止是如何工作的,为什么现在坏了!!我是编写它的人,现在也是我修改它的人,所以中间人也不会更改 :)
旧Class:
public class SelectionCriteria
{
public string SelectedAttribute { get; set; }
public string SelectedCriteria { get; set; }
public object SelectedValue { get; set; }
}
已修改 Class:
public class SelectionCriteria
{
public string SelectedAttribute { get; set; }
public string SelectedCriteria { get; set; }
public string SelectedValue { get; set; }
}