无法检索“MyService.Entities.Email”的元数据。 'System.Data.Entity.Internal.AppConfig'的类型初始值设定项引发了异常

时间:2012-05-12 16:03:29

标签: asp.net-mvc entity-framework controller metadata asp.net-mvc-4

我正在尝试使用MVC 4.0和EF 4.3.1的新Visual Studio 11 Beta。

添加控制器时,我收到以下消息“无法检索'MyService.Entities.Email'的元数据。'System.Data.Entity.Internal.AppConfig'的类型初始值设定项引发异常”

摄制

我有一个基本的解决方案,它有一个Entities项目(MyService.Entities)和MVC项目(MyService.Website)。

在Entities项目中,我首先使用“Email”类和DbContext类来代码。这两个类看起来像: 的 EntitiesDb

   namespace MyService.Entities
{
    public class EntitiesDb : DbContext
    {
        public EntitiesDb(string nameOrConnectionString)
            : base(nameOrConnectionString)
        { }

        public EntitiesDb()
        {
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            // Sets up the defaults for the model builder
            // Removes the metadata being written to the database, This is being depreciated anyhow 
            modelBuilder.Conventions.Remove<IncludeMetadataConvention>();

            // Sets the table names so that they are named as a none plural name 
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

            // Creates the database from scratch when it builds
            base.OnModelCreating(modelBuilder);
        }

        public DbSet<Email> Emails { get; set; }
    }
}

电子邮件

namespace MyService.Entities
{
    public class Email
    {
        public Email()
        {
        }

        [Key, DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]
        public int EmailId { get; set; }
        public string Subject { get; set; }
        public string BodyHTML { get; set; }
    }
}

我在MyService.Website MVC项目中引用了MyService.Entities项目,并设置了连接字符串以适合我的数据库名称

<add name="EntitiesDb" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=EntitiesDb;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

当我通过执行以下操作创建MVC脚手架时:

  • 右键单击控制器文件夹&gt;上的 添加&gt;的控制器
  • 将控制器名称设置为 EmailController
  • 使用Entity Framework将模板设置为具有读/写操作和视图的控制器
  • 将模型类设置为电子邮件(MyService.Entities)
  • 将数据上下文类设置为 EntitiesDb(MyService.Entities)
  • 将视图设为 Razor

显示

的消息

“无法检索'MyService.Entities.Email'的元数据。'System.Data.Entity.Internal.AppConfig'的类型初始值设定项引发异常”

令人困惑的是,它最初工作,然后我开始在数据库中添加更多实体和属性,然后它不允许我。我现在已经缩减了,它仍在继续。

在论坛上看了之后我尝试了一些事情:

  • 在MVC项目添加
  • 中检查连接字符串是否正确
  • 实体项目中的连接字符串
  • 重新安装Visual Studio 11 Beta,以防任何更新影响它
  • 检查引用是否匹配(它们都是EntityFramework 版本4.3.1.0)
  • 删除数据库以重建(现在我没有; o))

这是VS11中的错误吗?我在某个地方错过了对元数据的引用吗?

任何帮助都非常感激。

修改: 通过卸载EntitiesFramework并重新安装NuGet包来解决问题。

1 个答案:

答案 0 :(得分:1)

从网络配置中删除此部分

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,    EntityFramework" />
<providers>
 </providers>
</entityFramework>