Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架-列的类型';ColumnName';不支持。类型为';对象';_C#_Sql_Sql Server_Entity Framework_Ado.net - Fatal编程技术网

C# 实体框架-列的类型';ColumnName';不支持。类型为';对象';

C# 实体框架-列的类型';ColumnName';不支持。类型为';对象';,c#,sql,sql-server,entity-framework,ado.net,C#,Sql,Sql Server,Entity Framework,Ado.net,我在6个月前写了一段代码,运行良好,部署在多个环境中。我现在有了一个新的增强,当我尝试运行相同的代码时,它奇怪地给了我一个错误。我在网上搜索,但没有什么帮助。以下是有关守则: var parameter = new SqlParameter("@SearchCriteria", SqlDbType.Structured); parameter.Value = searchCriteria; parameter.TypeName = "dbo.SearchCriteria"; var outpu

我在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>();
我相信这个错误不是来自存储过程,而是来自ADO.NET/Entity框架,甚至在调用存储过程之前。我使用SQL配置文件进行了跟踪,这样调用就不会命中DB。我尝试在SSMS上直接运行SP,SP工作正常。因此,我可以看到它是实体框架或ADO.NET的一部分。

我在C#中有一个对象,它存储搜索条件,并在使用EF发送到存储过程之前转换为DataTable

其中一个字段“SelectedValue”被声明为“Object”。我把它改成了“字符串”,一切正常

我完全不知道这个代码到目前为止是如何工作的,为什么它现在会崩溃!!是我写的,现在是我修改的,所以中间人也没有变化:)

旧类:

public class SelectionCriteria
{
    public string SelectedAttribute { get; set; }
    public string SelectedCriteria { get; set; }
    public object SelectedValue { get; set; }
}
修改类:

public class SelectionCriteria
    {
        public string SelectedAttribute { get; set; }
        public string SelectedCriteria { get; set; }
        public string SelectedValue { get; set; }
    }

请显示存储过程和表结构“fieldName”的类型是什么?我的存储过程太大,无法放在这里;这里定义的表类型只有三个varchar字段。我没有更改SP,没有更改UDT,没有更改代码,但6个月后也通过代码失败。那么
tablename
类是什么?这是关于什么样的增强?有没有副作用?另外,能否显示异常的类型及其堆栈跟踪?我假设
searchCriteria
只是一个带有字符串列的
DataSet
public class SelectionCriteria
    {
        public string SelectedAttribute { get; set; }
        public string SelectedCriteria { get; set; }
        public string SelectedValue { get; set; }
    }