【发布时间】:2021-08-09 06:08:36
【问题描述】:
我有一个未映射的属性,并在下面收到此错误。我尝试了一个基类和接口,但它一直在尝试将 SQL 结果映射到正在发送的类。我不想将这个类复制到另一个类,因为这个类有大量的属性,而且它的一个他们的名单。该接口没有“日期”属性。
System.IndexOutOfRangeException: '日期'
方法
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);
【问题讨论】:
-
接口没有日期属性,但是接口的实现有吗?很好奇,因为我头脑中的这个错误映射到 ado.net 尝试从 db 获取结果中不存在的列的异常......即 reader["Date"]
-
接口没有,但TestComplex类有。
-
您能分享一下您目前是如何阻止该属性被映射的吗?
-
我没有做任何特别的事情。我认为它只会映射属于接口或基类的属性,但 SqlQuery 函数并非如此。
-
是的,sqlquery 函数会尝试对列匹配做一个属性,无论如何我也找不到忽略这一点。此外,它还会从您传递的泛型类型中获取属性,在这种情况下是 TestComplex,如果它具有返回的列的所有属性,则可以将其作为基类泛型输入
标签: c# .net sql-server entity-framework stored-procedures