Linq to sql 如何使用相同的DataContext实例修改Linq到Sql的映射?

Linq to sql 如何使用相同的DataContext实例修改Linq到Sql的映射?,linq-to-sql,datamapper,Linq To Sql,Datamapper,在尝试了这种事情之后:我发现了另一个问题 这是因为我想重用DataContext的同一个实例。但当我想在更改后刷新DataContext时,我会得到ArgumentException“已经添加了一个具有相同键的元素”。 到目前为止,我已经试过了: FieldInfo field = DataContext.Mapping.GetType().GetField("metaTables", BindingFlags.NonPublic | BindingFlags.Instance); Dictio

在尝试了这种事情之后:我发现了另一个问题

这是因为我想重用DataContext的同一个实例。但当我想在更改后刷新DataContext时,我会得到ArgumentException“已经添加了一个具有相同键的元素”。 到目前为止,我已经试过了:

FieldInfo field = DataContext.Mapping.GetType().GetField("metaTables", BindingFlags.NonPublic | BindingFlags.Instance);
Dictionary<Type, MetaTable> metaModels = field.GetValue(DataContext.Mapping) as Dictionary<Type, MetaTable>;

metaModels.Remove(typeof(MyClass)); //Remove the class that I've modified

DataContext.Mapping.GetTable(typeof(MyClass)); //ArgumentException
FieldInfo field=DataContext.Mapping.GetType().GetField(“元表”,BindingFlags.NonPublic | BindingFlags.Instance);
字典元模型=field.GetValue(DataContext.Mapping)作为字典;
删除(typeof(MyClass))//删除我修改过的类
GetTable(typeof(MyClass))//论据例外

我不清楚您想做什么以及为什么。但是重用上下文实例几乎总是一个坏主意。此外,通过黑客攻击来改变上下文可能会导致各种各样的副作用,你可能无法理解。坚持使用公共API。如果它不能提供您想要的内容,您可能不应该想要它,或者您必须尝试以一种更精细但更有意的方式来实现它。但我必须在运行时完成。