C# 如何在EntityFramework.Net核心应用程序中创建动态类型DbSet?

C# 如何在EntityFramework.Net核心应用程序中创建动态类型DbSet?,c#,entity-framework,.net-core,C#,Entity Framework,.net Core,在应用程序数据库中,将不时创建新表。我需要在不更改代码的情况下访问此表,并在web应用程序中显示表内容。 也许,我可以进行反射查询以获取新表及其列名 之后,我可以将动态数据库集添加到EntityFramework上下文: protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity("EntityName", config =>

在应用程序数据库中,将不时创建新表。我需要在不更改代码的情况下访问此表,并在web应用程序中显示表内容。 也许,我可以进行反射查询以获取新表及其列名

之后,我可以将动态数据库集添加到EntityFramework上下文:

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity("EntityName", config =>
        {
            config.Property("Id").HasColumnType("int");
            config.Property("Name").HasMaxLength(255);
            config.HasKey("Id");

        });

        base.OnModelCreating(modelBuilder);
    }
不幸的是,当我运行迁移时(dotnet ef migrations add MigrationName) 实体框架显示迁移错误:

System.Reflection.AmbiguousMatchException:找到不明确的匹配。 位于System.RuntimeType.GetMethodImplcomon(字符串名称、Int32 genericParameterCount、BindingFlags bindingAttr、Binder Binder、CallingConventions callConv、Type[]类型、ParameterModifier[]修饰符) 位于System.RuntimeType.GetMethodImpl(字符串名称、BindingFlags bindingAttr、Binder Binder、CallingConventions callConv、Type[]类型、ParameterModifier[]修饰符) 在System.Type.GetMethod(字符串名称,BindingFlags bindingAttr) 在C:\Users\aleks\Documents\visualstudio 2017\Projects\DynamicEF\DynamicEF\AppContext.cs中的DynamicEF.AppContext.OnModelCreating(ModelBuilder ModelBuilder ModelBuilder)中:第19行 位于Microsoft.EntityFrameworkCore.Infrastructure.ModelSource.CreateModel(DbContext上下文、IConventionSetBuilder约定SetBuilder、IModelValidator验证器) 在System.Lazy
1.ViaFactory(LazyThreadSafetyMode模式)
在System.Lazy
1.ExecutionAndPublication(LazyHelper ExecutionAndPublication,布尔值useDefaultConstructor) 在System.Lazy
1.CreateValue()中
在Microsoft.EntityFrameworkCore.Internal.DbContextServices.CreateModel()中
在Microsoft.EntityFrameworkCore.Internal.DbContextServices.get_Model()中
位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite ScopedCallSite,ServiceProviderEngineScope范围)
位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite ConstructorCallSite,ServiceProviderEngineScope作用域)
位于Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(ScopedCallSite ScopedCallSite,ServiceProviderEngineScope范围)
位于Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider提供程序,键入serviceType)
位于Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider提供程序)
在Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()中
在Microsoft.EntityFrameworkCore.DbContext.get\u InternalServiceProvider()中
位于Microsoft.EntityFrameworkCore.Internal.InternalAccessorExtensions.GetService[TService](IInfrastructure
1访问器) 位于Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func
1工厂)
位于Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(字符串contextType)
位于Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(字符串名称、字符串输出目录、字符串上下文类型)
位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(字符串名称、字符串输出目录、字符串上下文类型)
在Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.c__DisplayClass3_0上
位于Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作)
找到不明确的匹配项

我对“发现不明确匹配”感到困惑


我的错在哪里?我应该如何更改代码以修复迁移过程?

您在那里没有显示足够的代码来解释为什么会出现异常。。我以前从来没有听说过像这样一般/动态地使用EF,所以如果您没有显示足够的代码来解释为什么会出现这种异常,那么有更多的上下文将是非常有用的。。我以前从来没有听说过像这样一般/动态地使用EF,所以有更多的上下文是很有用的