Sql server 在MVC中从存储过程中检索数据

Sql server 在MVC中从存储过程中检索数据,sql-server,asp.net-mvc,stored-procedures,Sql Server,Asp.net Mvc,Stored Procedures,我有以下两个模型课 public partial class Items { public Items() { this.Items_RATINGS = new HashSet<Items_RATINGS>(); } public int ITEMID { get; set; } public string ITEMNAME { get; set; } public virtual ICollection<Items_R

我有以下两个模型课

public partial class Items {
    public Items() {
        this.Items_RATINGS = new HashSet<Items_RATINGS>();
    }

    public int ITEMID { get; set; }
    public string ITEMNAME { get; set; }
    public virtual ICollection<Items_RATINGS> Items_RATINGS { get; set; }
}

public partial class Items_RATINGS
{
    public int ItemsID { get; set; }
    public byte ItemsRATING { get; set; }
    public string COMMENTS { get; set; }
    public virtual Items Items { get; set; }
 }
在模型课上,我添加了

public virtual ICollection<GET_ITEM_AVERAGERATING_Result> GET_ITEM_AVERAGERATING { get; set; }

但是,我没有得到这个值。它抛出了一个错误。

您需要将存储过程添加到edmx模型中

下面是如何做到这一点

1-打开您的edmx文件

2-下一步,在Edmx设计器上的任意位置单击鼠标右键,然后选择“添加”>“函数导入”

3-这将打开添加函数的向导。选择要添加的过程并选择返回类型


4-然后可以从dbcontext中以CLR方法调用存储过程。

谢谢。就像你说的那样。我现在得到以下错误附加信息:指定的包含路径无效。EntityType“ItemModel.ITEMS”未声明名为“GET\u ITEM\u AVERAGERATING”的导航属性。请从ITEMS类中删除GET\u ITEM\u AVERAGERATING。将SP添加到edmx模型后,它将在YoutDbContext类中生成一个代理方法。因此,请在您的Items类中删除此导航属性,并从dcontext对象调用存储过程。您希望返回到视图的模型类型是什么?我希望返回Items模型。我想在这里显示该项目的总体评分。欢迎:请注意标签是独立的。也就是说,您不能组合多个标记来创建单个概念。标记[stored]和[procedure]与单个[stored procedures]标记不同。务必阅读选择标签时出现的说明!
public virtual ICollection<GET_ITEM_AVERAGERATING_Result> GET_ITEM_AVERAGERATING { get; set; }
return View(db.Items.Include(c => c.GET_ITEM_AVERAGERATING).ToList());