我正在尝试使用linq来调用存储过程。这是我的代码:
List<AllRowsMyDTO> list = Context.ExecuteStoreQuery<AllRowsMyDTO>("exec GetAllRows {0}", ClassID).AsQueryable().ToList();
public class AllRowsMyDTO
{
public int StudentId { get; set; }
public string StudentName { get; set; }
public string StudentLevel { get; set; }
public string FilePath { get; set; }
public string StudentPreRequisites { get; set; }
public bool IsGraded { get; set; }
}
GetAllRows存储过程接受一个整数参数,并运行一个select语句,获取与该ClassID匹配的所有记录。现在,列表包含AllRowsMyDTO类型的对象,因为存储过程返回了行。但是除了boolean属性之外,所有属性都是null。知道这里发生了什么吗?
另外,这是使用LinQ调用存储过程的最佳方法吗?
感谢您的时间。
答案 0 :(得分:0)
问题是你没有在映射中指定密钥,EF无法弄清楚它应该是什么。 EF需要某种形式的密钥用于结果(如果需要,可以是复合密钥)。