3

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

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

复制品

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

在 Entities 项目中,我首先拥有用于“电子邮件”的类和用于 DbContext 的类的代码。这两个类看起来像: EntityDb

   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 脚手架时:

  • 右键单击控制器文件夹 >添加>控制器
  • 将控制器名称设置为EmailController
  • 使用实体框架将模板设置为具有读/写操作和视图的控制器
  • 将模型类设置为电子邮件(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 包解决了问题。

4

1 回答 1

1

从 webconfig 中删除此部分

<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory,    EntityFramework" />
<providers>
 </providers>
</entityFramework>
于 2013-11-12T07:12:48.760 回答