2012-04-13 5 views
0

Wir versuchen, unsere lokale SAAS-Anwendung auf Windows Azure zu migrieren, und wir haben eine Vielzahl von Entity Framework speziell für ein Modul verwendet. Als Migrationsteil versuchen wir, die Anwendung in Phasen zu migrieren und zu testen. Wir versuchen, den Azure-AppFabric-Cache-Dienst als Sitzungszustandsanbieter zu verwenden.Probleme mit EF Dynamic Proxies, wenn der Azure Appfabric Cache-Dienst als Sitzungszustandsanbieter verwendet wird

Wenn ich versuche, den Sitzungsstatus zu appfabric Cache zu konfigurieren, laufen wir auf diese Probleme im Zusammenhang mit Entity-Framework, pls siehe Fehler Nr. 2. Zuerst haben wir diesen Fehler Nr. 1. Um dieses Problem zu beheben haben wir die Klasse als [DataContract] und das Problem wurde behoben.

Fehler Nr. 1. System.Runtime.Serialization.InvalidDataContractException: Typ 'XX.XX.XXX' kann nicht serialisiert werden. Erwägen Sie, es mit dem DataContractAttribute-Attribut zu markieren, und markieren Sie alle seine Member, die mit dem DataMemberAttribute-Attribut serialisiert werden sollen. Wenn es sich bei dem Typ um eine Sammlung handelt, sollten Sie diese mit CollectionDataContractAttribute markieren. Weitere unterstützte Typen finden Sie in der Microsoft .NET Framework-Dokumentation.

Fehler nein 2. Die Eigenschaft ‚AdXXXXXX‘ vom Typ ‚CaXXXXX_9FDDBE5B2C99F9C5DE2E0DCD2E8CC77D2CB59220D1A3413E91AF5A2B6A23026D‘ kann nicht eingestellt werden, da die Sammlung bereits zu einem EntityCollection gesetzt.

Wir sind völlig verloren, wie man diese Probleme beheben kann, und wenn gegoogelt ein paar Threads sagt, müssen wir den virtuellen Zugriffsmodifikator für die Eigenschaften entfernen. Derselbe Code funktioniert jedoch auch ohne Probleme wie dieser vor Ort, und der Code wird bei jeder Aktualisierung des Modells automatisch vom EF generiert. Wir haben auch andere Möglichkeit, SQLAzure als Sitzungszustandsanbieter in der zweiten Chance zu gehen, aber wir hoffen, dass es auch die gleichen Probleme gibt, da die Daten serialisiert werden müssen, wenn sie in der Sitzung gespeichert werden.

http://social.msdn.microsoft.com/forums/en/adonetefx/thread/99d8d4a1-5ab1-42dc-b9db-5087be02162d http://blog.iannelson.systems/entity-framework-week-part-3-runtime-issues-encountered/

Wir sind nicht mit verzögertes Laden und die Klassen werden von EF automatisch generiert, wenn wir das Modell aus der Datenbank aktualisieren.

Antwort

0

Konnten Sie versuchen, das virtuelle Schlüsselwort von allen Eigenschaften außer denen zu entfernen, die Sie für lazy ladende/Navigationseigenschaften benutzen (dh: entfernen Sie es von allen nativen Typen)?

Referenz: Code First adding to collections? How to use Code First with repositories?

+0

Wir sind nicht faul Laden verwenden und die Klassen werden durch EF automatisch, wenn wir das Modell aus der Datenbank aktualisieren. Wir haben keine Kontrolle über die von EF generierten Klassen. Oder müssen wir die virtuellen Eigenschaften manuell entfernen? – CSKR

+0

Nein, ich würde das virtuelle Schlüsselwort nicht manuell entfernen. Können Sie versuchen, die Änderungsverfolgung zu deaktivieren: context.SomeTable.MergeOption = MergeOption.NoTracking; –

+0

Wo können wir die Option MergeOption.NoTracking auf Tabellen hinzufügen, im Grunde haben wir versucht, indem Sie auf die Eigenschaften hinzufügen, aber immer noch das gleiche Problem. – CSKR

Verwandte Themen