将方法中的列表作为ADO中的参数传递给SQL

时间:2018-09-25 11:12:52

标签: c# sql asp.net entity-framework ado

我正在尝试传递要在我的SQL Server视图中搜索的Guid列表,但没有任何运气。

这是我的方法:

public static List<view_Members> getRecordsFromTable(List<Guid> memberkeys)
{
        List<view_Members> returnData = new List<view_Members>();

        // Connect to DB
        Connection_Model connectionModel = new Connection_Model();
        connectionModel.ENVIRONMENT = Environment;            

        string queryString = "SELECT * FROM [MyDB].[mySchema].[mySQLView] ";           
        queryString += " WHERE MemberKey IN {@guids}";

        using (SqlConnection connection = MyConnectionFactory.GetConnection("DBEntities"))
        {
            SqlCommand command = new SqlCommand(queryString, connection);
            command.Parameters.AddWithValue("@guids", memberkeys);
            command.CommandTimeout = 360;

            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

            try
            {
                while (reader.Read())
                {
                    returnData.Add(new view_Members
                    {
                        IdT = reader[0].ToString(),
                        RId = reader[1].ToString(),
                        MemberKey = Guid.Parse(reader[2].ToString())
                    });
                }
            }
            finally
            {
                reader.Close();
            }
        }

        return returnData;
}

尝试阅读时会引发错误:

  

不存在从对象类型System.Collections.Generic.List`1 [[System.String,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]到已知托管提供者本机类型的映射。 / p>

我尝试传递为字符串列表,但得到:

  

不存在从对象类型System.String[]到已知托管提供程序本机类型的映射

任何方向都很感激。

谢谢。

0 个答案:

没有答案