我的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 });
}
});
}
}
答案 0 :(得分:0)
如果动态加载实体装配,请不要使用
AppDomain.CurrentDomain.GetAssemblies()
使用
Directory.GetFiles(path, "*.dll")