2012-03-12 14 views

cevap

2

Sanal anahtar sözcüğünü kaldırarak ve sanal anahtar kelimesi olan nesnelerin ve koleksiyonların depolamamdaki Dahil Et bildirisinde sağlandığından emin olmak için bunu işe aldım.

public class Order 
{ 
    public int ID { get; set; } 
    public DateTime OrderDate { get; set; } 
    public ICollection<Product> Products { get; set; } 
} 

public interface IOrderRepository 
{ 
    IQueryable<Order> Orders { get; } 
    void SaveOrder(Order order); 
    void DeleteOrder(Order order); 
} 

public class OrderRepository 
{ 
    StoreDbContext db = new StoreDbContext(); 

    public IQueryable<Order> Orders 
    { 
     get { return db.Orders.Include("Products"); } 
    } 

    public void SaveOrder(Order order) 
    { 
     db.Entry(order).State = order.ID == 0 ? 
       EntityState.Added : 
       EntityState.Modified; 

     db.SaveChanges(); 
    } 

    public void DeleteOrder(Order order) 
    { 
     db.Orders.Remove(order); 

     db.SaveChanges(); 
    } 
} 
+0

Hata otomatik olarak oluşturulan proxy'leri serileştirme ile ilgili ise VE gerçekten bunlara ihtiyacınız yoksa, yalnızca bağlamınızda proxy oluşturmayı devre dışı bırakmanız gerekebilir ... İşte benzer bir Q/A ... http : //stackoverflow.com/questions/8173524/webapi-with-ef-code-first-generates-error-when-having-parent-child-relation – blins

+0

İşte muhtemelen daha verimli olan başka bir çözüm http://stackoverflow.com/sorular/7235650/varlık-framework-serialize-poco-to-json – starcorn

0

Benzer bir sorunla karşılaştım. Yalnızca basit türlere sahip bir tür ViewModel sınıfı kullanarak düzeltdim. DbContext tarafından döndürülen nesneyi ViewModel sınıfıma çevirdim ve bunu istemciye ilettim.

Bu, her durumda işe yaramazdı, ancak benimkide yaptı.

1

Aynı sorun vardı, varsayılan WebApi seri hale getirici ile ilgili bir sorun gibi görünüyor. Json.Net'i Global.asax.cs sayfamda bir biçimlendirici olarak ekledim ve benim için iyi çalıştı. http://blogs.msdn.com/b/henrikn/archive/2012/02/18/using-json-net-with-asp-net-web-api.aspx

Bu sadece Nuget kullanarak Json.Net paketi eklendi

JsonSerializerSettings serializerSettings = new JsonSerializerSettings(); 
serializerSettings.Converters.Add(new IsoDateTimeConverter()); 
GlobalConfiguration.Configuration.Formatters[0] = new JsonNetFormatter(serializerSettings); 

Benim Global.asax.cs içinde ne var olup olarak JsonNetFormatter sınıfını yarattı: Sadece bu örneği takip Yukarıdaki yazıya açıkladı.

0

Bu soruna da girdik. Benim durumum biraz farklıydı.

Bu yapıya sahiptim ve benim için işe yaramazdı.

[DataContract] 
public class MJPEGCamera : Camera 
{ 
} 
[DataContract] 
public class H264Camera : Camera 
{  
} 
[DataContract] 
public class Camera 
{ 
    [DataMember] 
    public string cameraName { get; set; } 
    [DataMember] 
    public string address { get; set; } 
    [DataMember] 
    public string format { get; set; } 
    [DataMember] 
    public string archiveDaysUrl { get; private set; } 
    [DataMember] 
    public string archiveHoursUrl { get; private set; } 
} 

Yani sadece ne gerekli gerçekleştirmek için kamera bir fabrika oluşturdu. Umarım bu cevabı bulan birisine yardım eder.

İlgili konular