Saya telah bereksperimen dengan membuat situs web yang memanfaatkan MVC dengan JSON untuk lapisan presentasi saya dan kerangka kerja Entity untuk model data / database. Masalah saya mulai berperan dengan membuat serialisasi objek Model saya ke dalam JSON.
Saya menggunakan metode kode pertama untuk membuat database saya. Ketika melakukan kode metode pertama hubungan satu ke banyak (orang tua / anak) mengharuskan anak untuk memiliki referensi kembali ke orang tua. (Contoh kode saya menjadi salah ketik tetapi Anda mendapatkan gambar)
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;}
}
Ketika mengembalikan objek "induk" melalui JsonResult, kesalahan referensi melingkar dilemparkan karena "child" memiliki properti induk kelas.
Saya telah mencoba atribut ScriptIgnore tetapi saya kehilangan kemampuan untuk melihat objek anak. Saya perlu menampilkan informasi dalam tampilan anak induk di beberapa titik.
Saya telah mencoba membuat kelas dasar untuk orang tua dan anak yang tidak memiliki referensi melingkar. Sayangnya ketika saya mencoba mengirim baseParent dan baseChild, ini dibaca oleh JSON Parser sebagai kelas turunannya (saya cukup yakin konsep ini lolos dari saya).
Base.baseParent basep = (Base.baseParent)parent;
return Json(basep, JsonRequestBehavior.AllowGet);
Satu solusi yang saya buat adalah membuat Model "View". Saya membuat versi sederhana dari model database yang tidak menyertakan referensi ke kelas induk. Model tampilan ini masing-masing memiliki metode untuk mengembalikan Versi Database dan konstruktor yang menggunakan model database sebagai parameter (viewmodel.name = databasemodel.name). Metode ini tampaknya dipaksakan meskipun berhasil.
CATATAN: Saya memposting di sini karena saya pikir ini diskusi yang lebih layak. Saya bisa memanfaatkan pola desain yang berbeda untuk mengatasi masalah ini atau itu bisa sesederhana menggunakan atribut yang berbeda pada model saya. Dalam pencarian saya, saya belum melihat metode yang baik untuk mengatasi masalah ini.
Tujuan akhir saya adalah memiliki aplikasi MVC yang bagus yang memanfaatkan JSON untuk berkomunikasi dengan server dan menampilkan data. Sambil mempertahankan model yang konsisten di seluruh lapisan (atau yang terbaik yang bisa saya buat dengan).