所以,我对MVC很新,刚刚开始关注DotNetCurry的几个教程,更具体地说是this one,但我面对this problem that it's already answered
但它的答案并不适合我。这是我的测试项目的上下文
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace Sysbat.Models
{
public class SysbatContext : DbContext
{
public DbSet<Objeto> Objetos { get; set; }
public DbSet<Propiedad> Propeidades { get; set; }
public DbSet<ObjetoPropiedades> ObjetosPropiedades { get; set; }
public DbSet<ObjetoValores> ObjetosValores { get; set; }
public DbSet<PropiedadValores> PorpiedadesValores { get; set; }
public SysbatContext() : base("DevConn"){}
}
}
知道为什么我在添加控件时也会获得Unable to cast object of type 'System.Data.Entity.Core.Objects.ObjectContext' to 'System.Data.Objects.ObjectContext'
?
我不想提出死者,因为这个答案是去年的答案,这就是我发布新问题的原因。
更新1:
经过进一步的研究,我发现这是不可能使用EF 6.1,我正在使用它,它要么升级到mvc 5,要么降级到EF 5.鉴于我是这样的使用VS2010(我的笔记本电脑无法处理VS2012或更新,需要升级,XD)MVC 5不是一个选项,所以我卸载了EF 6并安装了5,现在,我又收到了另一个错误
Unable to retrieve metadata for 'Sysbat.Models.Objeto'.
Unrecognized element 'providers'.
这里是班级&#39; Objeto&#39;我试图创建控件
/// <summary>
/// Class that hold the Objetos to be used in the system
/// </summary>
public class Objeto
{
[Key]
public int Oid { get; set; }
public string Nombre { get; set; }
public DateTime FechaCreacion { get; set; }
}
答案 0 :(得分:1)
这可能是许多不同的事情。这里确实没有足够的信息来正确诊断。
我发现控制器模板首先非常挑剔。有时,如果您没有重建解决方案的某个部分,它将失败。有时它会因为没有充分理由而失败。并且,它几乎只有 直接与实体类和DbContext
一起使用。如果您尝试使用视图模型,或者您将直接使用存储库或服务而不是DbContext
,则会失败。
无论多长时间,您都会发现,当您继续使用MVC时,它会比它的价值更加麻烦。我仍然使用&#34;添加&gt;控制器...&#34;,但我只是选择&#34; MVC 5控制器 - 空&#34;并自己设置一切。
但是,如果您仍然需要完整的控制器操作和视图生成功能,我建议最好的方法是首先清理并重建您的解决方案。如果它仍然给您错误,请关闭Visual Studio完成,然后重新打开您的解决方案。有时这足以让它发挥作用。此外,请确保解决方案中的所有项目都使用完全相同的Entity Framework和MVC版本。如果相互引用的项目之间的版本不匹配,有时会出现奇怪的行为。
答案 1 :(得分:-2)
所以,我找到了最后一期here的答案,现在我可以添加控制器了
编辑:
正如所建议的那样,我添加了我在链接中找到的解决方案
最后,问题在于我的连接字符串。在我的web.config中指定了一个提供程序,我没有使用它,所以我只需要删除该设置就可以了![/ p>
在:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
在
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>