LinQ ExecuteStoreQuery调用存储过程返回空值

时间:2012-04-25 17:55:27

标签: .net linq entity-framework stored-procedures

我正在尝试使用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调用存储过程的最佳方法吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

问题是你没有在映射中指定密钥,EF无法弄清楚它应该是什么。 EF需要某种形式的密钥用于结果(如果需要,可以是复合密钥)。