Asp.net mvc 3 在MVC3中执行存储过程时出错?

Asp.net mvc 3 在MVC3中执行存储过程时出错?,asp.net-mvc-3,sql-server-2008,stored-procedures,Asp.net Mvc 3,Sql Server 2008,Stored Procedures,Hi all i have方法,在该方法中,我将一些参数传递给存储过程,当我执行它时,会出现此错误 [指定的从物化的“System.Int32”类型到“System.String”类型的强制转换无效。] 这就是我如何称呼我的StoredProcess public JsonResult CreatedBugs() { int year; int month; int projectid; year = 2012;

Hi all i have方法,在该方法中,我将一些参数传递给存储过程,当我执行它时,会出现此错误

[指定的从物化的“System.Int32”类型到“System.String”类型的强制转换无效。]

这就是我如何称呼我的StoredProcess

  public JsonResult CreatedBugs()
    {
        int year;
        int month;
        int projectid;
        year = 2012;
        month = 8;
        projectid = 16;
        var loggedbugs = db.ExecuteStoreQuery<LoggedBugs>("LoggedBugs @Year,@Month,@ProjectID", new SqlParameter("@Year",year ), new SqlParameter("@Month",  month ), new SqlParameter("@ProjectID", projectid )).ToList();
        var ClosedBugs = db.ExecuteStoreQuery<LoggedBugs>("ClosedBugs @Year,@Month,@ProjectID", new SqlParameter("@Year", year), new SqlParameter("@Month", month), new SqlParameter("@ProjectID", projectid)).ToList();
        var model = new LoggedBugs
        {
            LoggedBugsCount = loggedbugs,
            ClosedBugs = ClosedBugs
        };
        return Json(model, JsonRequestBehavior.AllowGet);
    }  
我哪里做错了

Edit1

这是我的LoggedBug课程

 public class LoggedBugs
{
    public string projectName { get; set; }
    public string ProjectYear { get; set; }
    public string ProjectMonth { get; set; }
    public string Week1 { get; set; }
    public string Week2 { get; set; }
    public string Week3 { get; set; }
    public string Week4 { get; set; }
    public string Week5 { get; set; }
    public IEnumerable<LoggedBugs> LoggedBugsCount { get; set; }
    public IEnumerable<LoggedBugs> ClosedBugs { get; set; }
}
公共类日志数据库
{
公共字符串projectName{get;set;}
公共字符串ProjectYear{get;set;}
公共字符串ProjectMonth{get;set;}
公共字符串Week1{get;set;}
公共字符串Week2{get;set;}
公共字符串Week3{get;set;}
公共字符串Week4{get;set;}
公共字符串Week5{get;set;}
公共IEnumerable LoggedBugsCount{get;set;}
公共IEnumerable ClosedBugs{get;set;}
}

这可能是
ProjectYear
ProjectMonth
的问题。在数据库端,它们是
int
,因此在.NET端,它们可能会被解封为
System.Int32
。在您的实体中,它们是
string

尝试在sp中将其转换为
varchar
,或将实体中的类型更改为
int

将项目年和项目月属性更改为LoggedBugs类中的int类型。您的sql将它们返回为int,请参见,因为YEAR和MONTH sql函数都返回int类型的值。您的C#代码需要一个字符串,因此会出现类型不匹配的异常。

能否显示LoggedBugs类的代码,以及ProjectYear、ProjectMonth、Week1、Week2、Week4、Week4、Week5的sql类型。我猜你的程序返回的是一个int,但LoggedBugs将它定义为一个字符串type@nuhusky2003我用LoggedBug类更新了我的问题,我被选为项目年、项目月、第一周、第二周、第四周、第四周、第五周的varchar
 public class LoggedBugs
{
    public string projectName { get; set; }
    public string ProjectYear { get; set; }
    public string ProjectMonth { get; set; }
    public string Week1 { get; set; }
    public string Week2 { get; set; }
    public string Week3 { get; set; }
    public string Week4 { get; set; }
    public string Week5 { get; set; }
    public IEnumerable<LoggedBugs> LoggedBugsCount { get; set; }
    public IEnumerable<LoggedBugs> ClosedBugs { get; set; }
}