In the web application that I'm developing using Dynamic Data, I set the DataContext at runtime,
because the application may bind different contexts, depending on many variables.
I usually test it on two different browser, and, because of the session, I need to pass the same procedure twice.
The second time, the DataContext it's already set so I don't need to register the context anymore.
That's the simple condition I use:
if (System.Web.DynamicData.MetaModel.Default == null)
// Register context and routes
...
}
Exception
(the exception means: The item it's already present, Key in dictionary *** Key added ***)
[ArgumentException: L'elemento è già stato aggiunto. Chiave nel dizionario: 'MyAppDataContext'. Chiave aggiunta: 'MyAppDataContext']
System.Collections.Hashtable.Insert(Object key, Object nvalue, Boolean add) +7540648
System.Collections.Hashtable.Add(Object key, Object value) +11
System.Web.DynamicData.MetaModelManager.AddModel(Type contextType, MetaModel model) +159
System.Web.DynamicData.MetaModel.RegisterContext(DataModelProvider dataModelProvider, ContextConfiguration configuration) +1560
System.Web.DynamicData.MetaModel.RegisterContext(Func`1 contextFactory, ContextConfiguration configuration) +599
MyApp.Pages.LoginPage.login_Click(Object sender, EventArgs e) in C:\MyApp\Login.aspx.cs:69
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1546
[InvalidOperationException: An error occurred during model registration and this operation cannot be performed.]
System.Web.DynamicData.MetaModel.CheckForRegistrationException() +168
System.Web.DynamicData.MetaModel.get_Default() +30
MyApp.MasterPages.WebMasterPage.Page_Load(Object sender, EventArgs e) in C:\MyApp\Web.master.cs:47
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627