EF6:针对不同DbContexts

时间:2016-07-06 14:49:26

标签: c# entity-framework dbcontext

我刚从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...
}

每个上下文都必须有自己的配置才能实现我想要做的事情吗?

0 个答案:

没有答案