SORU
30 Temmuz 2010, Cuma


XML 4.0 ile Varlık Çerçevesi 4.0 kullanarak DataContractSerializer Hata

XML üzerinden Varlık çerçevesinden nesnelerin listesini almak için çalışıyorum, ancak aşağıdaki özel durum alıyorum:

Seri hale getirmek http://tempuri.org/:GetAllResult parametresi çalışılırken bir hata oluştu. InnerException mesajdı 'Tür 'System.Data.Entity.DynamicProxies.TestObject_240F2B681A782799F3A0C3afbe4a67a7e86083c3cc4a3939573c5410b408ecce' veri sözleşme adı 'TestObject_240F2B681A782799F3A0C3afbe4a67a7e86083c3cc4a3939573c5410b408ecce:http://schemas.ile datacontract./2004/07/System org.Data.Entity.'Beklenmiyor. DynamicProxies Kullanmayı düşünün bir DataContractResolver eklemek veya herhangi bir tür değil, bilinen statik olarak listenin bilinen türleri - örneğin, kullanarak KnownTypeAttribute öznitelik veya ekleyerek onlara listesinin bilinen türleri geçirilen DataContractSerializer.'. Daha fazla bilgi için InnerException öğesine bakın.

Varlık Çerçevesi ile geçmişte, ama hiç XML kullandım. Bütün varlıkları Varlık Çerçevesi ile oluşturulan ve ile açıklamalı [DataContract] ve [DataMember] bağlıyor. Benim varlıkları hiç Navigasyon Özellikleri var.

Bu GetAll() yöntemi çağrılan soyut bir hizmet sınıfında

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

Ve ChannelFactory benim uygulama aramak için kullanıyorum:

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

Gibi buna ev sahipliği yapıyorum:

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

Hata ayıklama kullanırken, nesneleri döndürme başarısız veritabanından nesneleri, ancak bulur.

Yanlış gitmem nereden geldiği hakkında bir fikriniz var mı?

CEVAP
27 ŞUBAT 2012, PAZARTESİ


Code First (EF 4.3) için DbContext API kullanarak yapmak zorunda kaldım:

public class MyClass : DbContext
{
    public MyClass()
    {
        base.Configuration.ProxyCreationEnabled = false;
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andyabc45

    andyabc45

    1 Mayıs 2011
  • Ryan Ha

    Ryan Ha

    9 NİSAN 2006
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009