WCF-Verträge von Entity Framework?

entity-framework wcf

Frage

Ich habe in dieser Frage viele Sackgassen aufgedeckt. Angeblich hat .NET 3.5 SP1 Unterstützung für ADO.NET Entity Framework-Entitäten in WCF-Verträgen. Aber wenn ich nach soliden Informationen suche, bekomme ich nicht viele Antworten. Ich habe diesen einen Ausschnitt in einem MSDN-Thread gefunden. Hat jemand Erfahrung damit? Was ist mit dem [DataContract] passiert? Ist das alles, was dazu gehört? Warum gibt es so wenig Material dazu?

Dies ist die Antwort von Tim Mallalieu in Microsoft.

Entitätstypen, die im Entity Framework generiert werden, sind standardmäßig Datenverträge. Wenn ich im Entity Designer ein einfaches Modell wie das Folgende erstellen würde: Der Entitätstyp des Wagens ist standardmäßig ein DataContract, in dem alle Eigenschaften als Datenelemente angegeben sind. Wir können dies dann in einem WCF-Dienst wie folgt verwenden:

[ServiceContract]

public interface IService1

{
    [OperationContract]
    Cart[] AllCarts();
}



public class Service1 : IService1

{
    public Cart[] AllCarts() 

    {
        using (MSPetShop4Entities context = new MSPetShop4Entities())

        {
            var carts = from c in context.Carts select c;
            return carts.ToArray();
        }
    }
}

Da es sich bei den Entitäten um DataContracts handelt, können Sie Ihre Services jetzt nach Ihren Wünschen rollen und diese über die gesamte Leitung senden.

Akzeptierte Antwort

Sie könnten den einfachen Weg gehen und ADO.NET Data Services verwenden .


Beliebte Antwort

Ich empfehle Ihnen, Entities nicht direkt zurückzugeben. Leider hat Microsoft entschieden, implementierungsspezifische Daten als Teil des DataContract für Entitäten einzubeziehen. Dies funktioniert nicht mit anderen Plattformen und ist eine Sache, die möglicherweise selbst zwischen .NET-Versionen nicht funktioniert.

Stattdessen empfehle ich, dass Sie dem Data Transfer Object-Muster folgen und einfach POCO-Klassen zurückgeben, die Kopien der Daten in den Entitäten sind, ohne dass dies zu einem Verhalten führt. Sie können die Liste dieser Klassen zurückgeben, um eine Tabelle usw. darzustellen.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum