Contrats WCF de Entity Framework?

entity-framework wcf

Question

Je suis venu avec beaucoup d'impasses sur cette question. Soi-disant .NET 3.5 SP1 prend en charge les entités ADO.NET Entity Framework dans les contrats WCF. Mais quand je cherche des informations solides à ce sujet, je ne reçois pas beaucoup de réponses. J'ai trouvé cet extrait sur un thread MSDN. Est-ce que quelqu'un a de l'expérience avec ça? Qu'est-il arrivé au [DataContract]? Est-ce tout ce qu'il y a à faire? Pourquoi y a-t-il si peu de matériel à ce sujet?

C'est la réponse de Tim Mallalieu à Microsoft.

Les types d'entité générés dans Entity Framework sont, par défaut, des contrats de données. Si je devais créer un modèle simple dans Entity Designer comme suit: Le type d'entité du panier est par défaut un DataContract avec toutes les propriétés annotées en tant que membres de données. Nous pouvons ensuite utiliser cela dans un service WCF comme suit:

[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();
        }
    }
}

Comme les entités sont des contrats de données, vous pouvez désormais déployer vos services à votre guise et les envoyer sur le réseau.

Réponse acceptée

Vous pouvez utiliser la solution de facilité et utiliser ADO.NET Data Services .


Réponse populaire

Je vous recommande de ne pas renvoyer les entités directement. Malheureusement, Microsoft a choisi d'inclure des données spécifiques à l'implémentation dans le DataContract pour les entités. Cela n'interagira pas avec d'autres plates-formes, et c'est le genre de chose qui pourrait ne pas interopérer, même entre les versions .NET.

Au lieu de cela, je vous recommande de suivre le modèle d'objet de transfert de données et de simplement renvoyer les classes POCO qui sont des copies des données des entités, sans comportement. Vous pouvez retourner Liste de ces classes pour représenter une table, etc.



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow