我刚从EF5更新到EF6。这让我介绍了DbConfiguration,因为我需要其中一个,所以我不需要将EntityFramework作为依赖添加到我的其他项目(解决方案有8个项目)。 一切都在工作,直到我决定让我的DbConfiguration类(继承)是通用的,以便其他DbContext类可以使用它。在这样做之后,我开始收到错误"无法创建类型' Repository.Contexts.ContextConfiguration`1 [Repository.Contexts.GlobalContext]'的实例。类型不能是通用的。"。
继承人[新] DbConfiguration:
using System.Data.Entity;
using System.Data.Entity.SqlServer;
namespace Repository.Contexts
{
// Old impl did not have a constraint. Instead, the type was directly used in the CreateDatabaseIfNotExists's param
public class ContextConfiguration<TContext> : DbConfiguration where TContext : DbContext
{
public ContextConfiguration()
{
SetDatabaseInitializer(new CreateDatabaseIfNotExists<TContext>());
SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance);
}
}
}
配置使用如下:
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
[DbConfigurationType(typeof(ContextConfiguration<GlobalContext>))]
public class GlobalContext : DbContext
{
// DbSets...
// Constructor...
// OnModelCreating...
}
每个上下文都必须有自己的配置才能实现我想要做的事情吗?