映射未命名的存储过程列

时间:2015-08-28 14:47:47

标签: c# sql-server entity-framework stored-procedures

我有一个存储过程:

ALTER PROCEDURE [dbo].[sp_MoodTester]
AS
BEGIN
    SELECT Id, 
           count(Id)  // Un-named, auto named to Column1 in entity model
    FROM Behaviors
    WHERE Id = 1
    GROUP by Id
END

当我从这样的应用程序中调用此存储过程时

var aa = context.sp_MoodTester().ToList();

我得到了一个例外

  

数据阅读器与指定的内容不兼容   'RelativityModel.sp_MoodTester_Result'。该类型的成员,   'Column1'在数据读取器中没有对应的列   同名。

然后我尝试了另一种方式,比如

我创建了一个类似

的模型
public class ModelClass
{
    public int Id { get; set; }
    public Nullable<int> Column1 { get; set; }
}

并尝试这种方式

var obj = context.Database.SqlQuery<ModelClass>("sp_MoodTester").ToList();

它返回一个对象但是使用空列“Column1”,而从该数据库返回的值为“1”。

enter image description here

我的问题是如何获取此值,因为我无法访问数据库来修改存储过程?

我仍无法解决此问题。

1 个答案:

答案 0 :(得分:-2)

为计数栏命名:

ALTER PROCEDURE [dbo].[sp_MoodTester]
AS
BEGIN
    SELECT Id, 
           count(Id) as 'theCount'
    FROM Impacts
    where Id = 1
    GROUP by Id
END