3

当我生成我正在使用 EF6 的表和关系的实体视图并且我正在编写有关编写 DbContext 类的教程时,我遇到了一个错误。有没有人知道我为什么会收到这个错误以及如何解决它。

Error 168: The provider did not return a ProviderManifest instance. 
The provider did not return a ProviderManifest instance.C:\....\BlogContext.edmx                            Miscellaneous Files

  <configSections>
      <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />


  <connectionStrings>    
    <add name="BlogContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-BlogDbContext-20131105145750;User Instance=false;Persist Security Info=False;Integrated Security=SSPI; AttachDBFilename=|DataDirectory|\aspnet-BlogDbContext-20131105145750.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>

<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>


[DbConfigurationType(typeof(EntityFrameworkDbConfiguration))]
public partial class BlogContext : DbContextBase
{
    public BlogContext()
        : base("BlogContext")
    {
        Database.SetInitializer<BlogContext>(null);
        Configuration.ProxyCreationEnabled = false;
    }

    public new IDbSet<T> Set<T>() where T : class
    {
        return base.Set<T>();
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Configurations.Add(new CategoryMap());
        modelBuilder.Configurations.Add(new PostMap());                       
        modelBuilder.Configurations.Add(new TagMap());
        modelBuilder.Configurations.Add(new PostTagMap());
        modelBuilder.Configurations.Add(new CommentMap());            
    }
}


    public class DbContextBase: DbContext, IDbContext
{
    public readonly Guid _instanceId;


    public DbContextBase(string nameOrConnectionString)
        : base(nameOrConnectionString)
    {
        _instanceId = Guid.NewGuid();
    }

    public Guid InstanceId
    {
        get { return _instanceId; }
    }

    public void ApplyStateChanges()
    {
        foreach (DbEntityEntry dbEntityEntry in ChangeTracker.Entries())
        {
            var entityState = dbEntityEntry.Entity as IObjectState;
            if (entityState == null)
                throw new InvalidCastException("All entities must implement the IObjectState interface, " +
                    "this interface must be implemented so each entities state can explicitly determined when updating graphs.");

            dbEntityEntry.State = StateHelper.ConvertState(entityState.State);
        }
    }

    public new IDbSet<T> Set<T>() where T : class
    {
        return base.Set<T>();
    }

    public override int SaveChanges()
    {
        ApplyStateChanges();
        return base.SaveChanges();
    }

    public override Task<int> SaveChangesAsync()
    {
        ApplyStateChanges();
        return base.SaveChangesAsync();
    }

    public override Task<int> SaveChangesAsync(System.Threading.CancellationToken cancellationToken)
    {
        ApplyStateChanges();
        return base.SaveChangesAsync(cancellationToken);
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        base.OnModelCreating(modelBuilder);
    }
}
4

0 回答 0