将存储过程导入我的datamodel后,项目停止编译。
它一直给我错误:
The best overloaded method match for
'System.Data.Entity.Core.Objects.ObjectContext.ExecuteFunction<TicketDataModel.sp_get_orphanjobgrades1_Result>
(string, params System.Data.Entity.Core.Objects.ObjectParameter[])'
has some invalid arguments C:\Users\nikolaev\Documents\MySoft\TicketManager-06 11 2013\TicketManager\TicketDataModel\TicketDataModel\TicketEntities.Context.cs 105 20 TicketDataModel
和
`Argument 3: cannot convert from 'System.Data.Objects.ObjectParameter' to
'System.Data.Entity.Core.Objects.ObjectParameter'
C:\Users\nikolaev\Documents\MySoft\TicketManager-06 11 2013\TicketManager\TicketDataModel\TicketDataModel\TicketEntities.Context.cs 79 143 TicketDataModel`
context.cs
中的代码如下:
public virtual ObjectResult<sp_get_orphanjobgrades1_Result> sp_get_orphanjobgrades1(Nullable<System.DateTime> start_date, Nullable<System.DateTime> end_date)
{
var start_dateParameter = start_date.HasValue ?
new ObjectParameter("start_date", start_date) :
new ObjectParameter("start_date", typeof(System.DateTime));
var end_dateParameter = end_date.HasValue ?
new ObjectParameter("end_date", end_date) :
new ObjectParameter("end_date", typeof(System.DateTime));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<sp_get_orphanjobgrades1_Result>("sp_get_orphanjobgrades1", start_dateParameter, end_dateParameter);
}
我读到这可能是因为EF 6并且需要为VS 2012下载VS 2012 Update 1和/或EF 6 Tools。我下载了这些工具,我已经安装了更新4,但是没有帮助
这是为什么?
答案 0 :(得分:52)
问题是您的模型对新参数一无所知。我想当你的模型使用 EntityFramework(EF)较低版本(例如5.0)时会发生这种情况,但在代码中你试图使用EF 6.0。
因此,您应该将代码降级到EF 5.0,或者将模型升级到6.0。
升级模型:
或者您可以降级代码中使用的EF版本。为此,您应该在前3个步骤中执行所有操作,但在第4个步骤中使用“ - 版本5.0.0”替换“ - 版本6.0.0”。这不需要第5步。
答案 1 :(得分:3)
解决此问题:
如果版本冲突,请为相应版本的EF
安装包。
如果版本相同,请将上述名称空间更改为System.Data.Entity.Core.Objects
答案 2 :(得分:2)
您可以在msdn。
下载新版本答案 3 :(得分:1)
我只是想补充说,在开始一个全新的项目后,这发生在我身上。问题是我创建了一个新项目,然后通过NuGet包管理器继续更新实体框架,ASP.Net MVC和其他包。因此,为我的项目生成的代码不再与我安装的代码相匹配。
对我来说,最快的解决方案就是创建一个新项目,因为我还没有做过任何实际的工作。我希望这有助于其他人。
答案 4 :(得分:1)
我的情况是一个新项目,我去安装了6.0版本的Install-Package EntityFramework,但显然我的项目已经设置了早期版本?不确定如何,也许是MVC 4.0项目的默认设置......
所以我不得不做一个Uninstall-Package -force EntityFramework Install-Package EntityFramework -version 5.0.0
之后一切都有效。