Lassen Sie mich zunächst darlegen, was ich tun möchte. Angenommen, ich habe drei Arten von EntityObject
, MetaData
, Data1
et Data2
. MetaData
ist, wie zu erwarten, ein Verweis auf jeweils eine Instanz von Data1
et Data2
. Nun, für jede MetaData
kann ich eine value
.
So weit, so einfach. Jetzt möchte ich, dass der Benutzer mit verschiedenen Kombinationen von Data1
et Data2
und sehen, was value
s sie bekommen können. Dies erfordert natürlich die Erstellung von Instanzen von MetaData
. Wenn ich nun die Datenbank nicht mit all diesen Einträgen überfrachten will MetaData
dann möchte ich die Entitätsobjekte im In-Memory-Kontext erstellen, ohne eine SaveChanges()
um sie in die DB zurückzuschreiben. Dies stellt jedoch ein Problem dar, denn immer wenn ich versuche, auf die Data1
et Data2
Referenzen der In-Memory MetaData
Ich erhalte die folgende Ausnahme:
InvalidOperationException ist unbehandelt
Die Quellabfrage für diese EntityCollection oder EntityReference kann nicht zurückgegeben werden, wenn sich das zugehörige Objekt entweder in einem hinzugefügten Zustand oder in einem abgetrennten Zustand befindet und ursprünglich nicht mit der Zusammenführungsoption NoTracking abgerufen wurde.
Wenn ich wie vorgeschlagen vorgehe und das Objekt an die DB "übertrage", habe ich am Ende das Problem der Unordnung.
Jedenfalls sieht der schuldige Code etwa so aus:
MetaData temp = MetaData.CreateMetaData(0);
MetaData.Data1 = <existing Data1 from context>;
MetaData.Data2 = <existing Data2 from context>;
//Exception here
if (!MetaData.Data1Reference.isLoaded)
MetaData.Data1Reference.Load();
Es scheint dieser Typ hatte ein ähnliches Problem.