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; }
    }