“模型构建器”不包含“ ApplyAllConfigurations”的定义?

时间:2019-01-04 06:42:03

标签: asp.net-core entity-framework-core dbcontext ef-fluent-api ef-model-builder

我正在跟踪this youtube视频,并且在时间34:05,这是使用EntityFramework Core的ASP.Net核心的体系结构,并且它们正在显示扩展方法

    modelBuilder.ApplyAllConfigurations();

我在代码中尝试过此操作,并引发错误: 'ModelBuilder'不包含'ApplyAllConfigurations'的定义,找不到可以接受的扩展方法'ApplyAllConfigurations'接受类型为'ModelBuilder'的第一个参数(您是否缺少using指令或程序集引用?

我缺少参考吗?如果没有,如何在我的项目中实现?

1 个答案:

答案 0 :(得分:0)

检查您的ApplyAllConfigurations方法是否如下。我正在使用它,它工作得很好。

public static class ModelBuilderExtensions
{
    public static void ApplyAllConfigurations(this ModelBuilder modelBuilder)
    {
        var typesToRegister = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.GetInterfaces()
            .Any(gi => gi.IsGenericType && gi.GetGenericTypeDefinition() == typeof(IEntityTypeConfiguration<>))).ToList();

        foreach (var type in typesToRegister)
        {
            dynamic configurationInstance = Activator.CreateInstance(type);
            modelBuilder.ApplyConfiguration(configurationInstance);
        }
    }

}

注意:确保此扩展方法和您的DbContext在同一程序集中。否则,请在扩展方法中显式指定程序集名称。