System.IndexOutOfRangeException 和带接口或基的 SqlQuery 方法 Class

System.IndexOutOfRangeException and SqlQuery method with Interface or Base Class

我有一个未映射的 属性 并在下面收到此错误。我尝试了基础 class 和接口,但它一直试图将 SQL 结果映射到正在发送的 class。我不想将此 class 复制到另一个,因为此 class 上有大量属性及其列表。界面没有“日期”属性.

System.IndexOutOfRangeException: 'Date'

方法

public List<T> GetTest<T>(int testId) where T : IBaseTestComplex
{
    return DataContext.Database.SqlQuery<T>("EXEC [Test].[GetTest] @TestId",
        new SqlParameter("TestId", testId)).ToList();
}

来电

var tests = testRepository.GetTest<TestComplex>(testId);

最后我使用了 SqlDateReader 来跳过那些每天抛出数十万次的异常。

            using (var connection = new SqlConnection(DataContext.Database.Connection.ConnectionString))
            {
                using (var cmd = new SqlCommand("[Test].[GetTest]", connection))
                {
                    var parameters = new List<SqlParameter>
                    {
                        new SqlParameter("TestId", GetDataValue(testId))
                    };

                    cmd.Parameters.AddRange(parameters.ToArray());

                    connection.Open();

                    cmd.CommandType = CommandType.StoredProcedure;
                    using (var dr = cmd.ExecuteReader())
                    {
                        if (dr.HasRows)
                        {
                            while (dr.Read())
                            {
                               games.Add(Get(dr));
                            }
                        }
                    }
                }
            }