DataContractSerializer Erreur à l'aide de Entity Framework 4.0 avec WCF 4.0

Je suis tenter de récupérer une liste d'objets à partir d'Entity Framework via WCF, mais je suis la réception de l'exception suivante:

Il y avait une erreur lors de la tentative de sérialiser paramètre http://tempuri.org/:GetAllResult. Le InnerException message a été 'Type 'System.Data.Entity.DynamicProxies.TestObject_240F2B681A782799F3A0C3afbe4a67a7e86083c3cc4a3939573c5410b408ecce "avec les données du contrat nom de" TestObject_240F2B681A782799F3A0C3afbe4a67a7e86083c3cc4a3939573c5410b408ecce:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies " n'est pas prévu. Envisagez d'utiliser un DataContractResolver ou ajouter tous les types pas connu statiquement à la liste des types connus - par exemple, en utilisant la KnownTypeAttribute attribut ou en les ajoutant à la liste des types connus passé à DataContractSerializer.'. Veuillez voir InnerException pour plus de détails.

J'ai utilisé de la WCF dans le passé, mais jamais avec Entity Framework. J'ai toutes mes entités générées via Entity Framework et sont annotés avec [DataContract] et [DataMember] attributs. Je n'ai pas de Propriétés de Navigation sur un de mes entités.

La GetAll() la méthode appelée est dans un résumé à la classe de service:

[ServiceContract]
public interface IService<T>
{
    [OperationContract]
    List<T> GetAll();
}

Et je suis en utilisant le ChannelFactory d'appeler mon de mise en œuvre:

Binding binding = new NetTcpBinding();
EndpointAddress endpointAddress = new EndpointAddress("net.tcp://localhost:8081/" + typeof(TestObjectService).Name);
using (ChannelFactory<ITestObjectService> channel = new ChannelFactory<ITestObjectService>(binding, endpointAddress))
{
    ITestObjectService testObjectService = channel.CreateChannel();
    testObjects = testObjectService.GetAll();
    channel.Close();
}

Je suis d'hébergement en tant que tel:

Type type = typeof(TestObjectService);
ServiceHost host = new ServiceHost(type,
            new Uri("http://localhost:8080/" + type.Name),
            new Uri("net.tcp://localhost:8081/" + type.Name));
host.Open();

Lors de l'utilisation de débogage, il trouve les objets de la base de données, cependant, il est à défaut de retourner les objets.

Des idées quant à l'endroit où j'ai peut-être tort?

InformationsquelleAutor Brandon | 2010-07-30