实体类型不是当前上下文奇怪错误的模型的一部分

时间:2017-10-26 10:45:52

标签: c# entity-framework dbcontext

我的DB上下文初始化如下。一切正常。在visual studio调试模式下停止并重新启动项目之后,错误'实体' x' type不是当前上下文的模型的一部分'对于相同的操作发生。在调试模式下,我看到这个' x'调用entityType。

但是,如果我重建实体项目,一切正常,直到下次调试重启。

有什么想法吗?

public class FsDbContext : DataContext<DbContext>, ITransientDataContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //MappingAssemblies.All.ForEach(assembly => modelBuilder.Configurations.AddFromAssembly(assembly));

        var addMethod = typeof(ConfigurationRegistrar).GetMethods().Single(m => m.Name == "Add"
            && m.GetGenericArguments().Any(a => a.Name == "TEntityType"));

        MappingAssemblies.All.ForEach(assembly =>
        {
            var configTypes = assembly.GetTypes().Where(t => t.BaseType != null 
                && t.BaseType.IsGenericType 
                && t.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));

            foreach (var type in configTypes)
            {
                var entityType = type.BaseType.GetGenericArguments().Single();

                var entityConfig = assembly.CreateInstance(type.FullName);
                addMethod.MakeGenericMethod(entityType)
                  .Invoke(modelBuilder.Configurations, new object[] { entityConfig });
            }
        });

    }
}

1 个答案:

答案 0 :(得分:0)

如果动态加载实体装配,请不要使用

AppDomain.CurrentDomain.GetAssemblies()

使用

Directory.GetFiles(path, "*.dll")