在EFConfiguration'之前使用的DbConfiguration实例发现了类型

时间:2015-07-01 01:42:14

标签: c# entity-framework-6

在我的MVC4应用程序中,我参考了我的EF模型组件。一切都很好。突然间,我开始收到以下错误信息。

The default DbConfiguration instance was used by the Entity Framework before the 'EFConfiguration' type was discovered. An instance of 'EFConfiguration' must be set at application start before using any Entity Framework features or must be registered in the application's config file. See http://go.microsoft.com/fwlink/?LinkId=260883 for more information.

我正在使用EF 6.任何想法可能是什么原因?我仔细检查数据库并更新并与EF dll同步。

更新:我在尝试实例化Context对象时收到此错误

mEntities context = new Entities();

由于

2 个答案:

答案 0 :(得分:3)

我只想为那些有类似错误消息的人留下解决方案。作为来自Vinicius Paiva的link,它清楚地解释了如果你在不同的dll中有多个dbcontex,你应该引用你的DbConfiguration文件,如果你在代码中创建了一个。 在我的情况下,我在DAL项目上引用了azure函数项目,只有获得azure函数项目的方法是创建基于部分类和代码的DbConfiguration文件。

使用下面的代码

扩展我的edmx文件DbContext
namespace myApp.Data.Models
{
    [DbConfigurationType(typeof(myDBContextConfig))]
    partial class myDBEntities
    {

        public myDBEntities(string connectionString) : base(connectionString)
        {
        }
    }

      public  class myDBContextConfig : DbConfiguration
        {
            public myDBContextConfig()
            {
                SetProviderServices("System.Data.EntityClient", 
                SqlProviderServices.Instance);
                SetDefaultConnectionFactory(new SqlConnectionFactory());
            }
        }
    }

这个DAL库引用了一个MVC项目,我们有另一个edmx实例。因此,当我在这个项目上运行时,就抛出了这个异常。为了解决这个问题。您需要在配置文件中扩展或添加如下所示的entityFramework节点(在本例中为web.config)

<entityFramework codeConfigurationType="myApp.Data.Models.myDBContextConfig , myApp.Data">
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework> 

答案 1 :(得分:0)

请问你的问题是因为你有一个像DAL这样的课程

public class EfConfiguration : DbConfiguration

在这种情况下,必须在Global.asax

中使用EF Context之前初始化它

RGDS