Ben sunum katmanı için JSON ve veri modeli / veritabanı için Entity framework ile MVC kaldıraç bir web sitesi oluşturma deniyor. Benim Sorunum Model nesneleri JSON içine serileştirme ile devreye girer.
Veritabanımı oluşturmak için kod ilk yöntemini kullanıyorum. İlk kodu yaparken, bire çok ilişkisine (ebeveyn / çocuk) çocuğun ebeveynine geri başvurması gerekir. (Örnek kod benim bir yazım hatası olmak ama resmi almak)
class parent
{
public List<child> Children{get;set;}
public int Id{get;set;}
}
class child
{
public int ParentId{get;set;}
[ForeignKey("ParentId")]
public parent MyParent{get;set;}
public string name{get;set;}
}
Bir "üst" nesneyi JsonResult aracılığıyla döndürürken, "child" sınıf üst özelliğine sahip olduğundan dairesel bir başvuru hatası atılır.
ScriptIgnore özniteliğini denedim ancak alt nesnelere bakma yeteneğini kaybettim. Bilgileri bir noktada ana çocuk görünümünde göstermem gerekecek.
Dairesel referansı olmayan hem ebeveyn hem de çocuk için temel sınıflar yapmaya çalıştım. Ne yazık ki baseParent ve baseChild göndermeye çalıştığımda bunlar türetilmiş sınıfları olarak JSON Parser tarafından okunur (bu kavram beni kaçıyor eminim).
Base.baseParent basep = (Base.baseParent)parent;
return Json(basep, JsonRequestBehavior.AllowGet);
Geldiğim tek çözüm "Görünüm" Modelleri oluşturmak. Üst sınıfa başvuru içermeyen veritabanı modellerinin basit sürümlerini oluşturuyorum. Bu görünüm modellerinin her birinde Veritabanı Sürümü'nü ve veritabanı modelini parametre olarak alan bir yapıcı (viewmodel.name = databasemodel.name) döndürme yöntemi vardır. Bu yöntem, çalışmasına rağmen zorunlu görünüyor.
NOT: Buraya gönderiyorum çünkü bunun daha fazla tartışmaya değer olduğunu düşünüyorum. Bu sorunu aşmak için farklı bir tasarım deseni kullanabilirim veya modelimde farklı bir özellik kullanmak kadar basit olabilir. Aramamda bu sorunun üstesinden gelmek için iyi bir yöntem görmedim.
Son hedefim, sunucuyla iletişim kurmak ve verileri görüntülemek için JSON'dan büyük oranda yararlanan güzel bir MVC uygulamasına sahip olmaktı. Katmanlar arasında tutarlı bir model korurken (veya gelebildiğim kadar iyi).