我使用EF 4.1數據庫優先方法,使用T4模板在單獨的程序集中生成我的POCO類。我有用於獲取數據的存儲庫以及用於與UI進行通信的服務層。EF 4.1 + MVC + JSON循環引用異常的最佳解決方案?
我正試着做級聯下拉菜單。 我是MVC和EF 4.1中的新成員,所以我搜索了可能的解決方案。
這是樣品ViewModel類:
public class MyViewModel
{
public int CustomerId { get; set; }
public string CustomerName { get; set; }
public IEnumerable<Phone> Phones { get; set; }
}
我至今讀,解決方案是:
使用
ScriptIgnoreAttribute
在System.Web.Script.Serialization
上 參考性 - 我不 真的想要這樣做,因爲我 不想添加引用 System.Web在我的POCO項目中禁用延遲加載在EF 4.1的DbContext - 我不知道我想和使用包括制定深入我的項目
返回匿名類型 - 我會用這種方法,當我的項目得到大的問題?
使用ViewModel - 假設我有一個客戶可以有一個或多個電話。在第一個下拉列表中,您可以選擇客戶,然後在第二個下拉列表中顯示他所有的手機。
但是,這不會在我的Phones對象上生成一個循環異常嗎?或者我會爲我的電話對象製作一個特殊的課程?這似乎是很多不必要的代碼。使用AutoMapper - 沒有AutoMapper的經驗,所以我不知道它有多複雜。
你會爲哪一票投票,爲什麼?
我可以使用我的示例類作爲viewmodel嗎?我是否有Phone實體的循環參考序列化問題(也是由EF 4.1生成的POCO)? –
@MarkoTošić,你擁有的不是視圖模型,因爲它包含對你的域模型(電話)的引用。這是一些混合,如果這個電話類本身有其他領域模型的引用,你會很快結束了同樣的問題。不要這樣做。定義一個純視圖模型類。 –
因此,我將不得不爲我的Phone模型對象類定義一個DTO PhoneDTO類,然後在ViewModel中擁有IEnumerable屬性? 我試圖找到一個「更容易」的解決方案,但最終,這似乎是正確的做法。 P.S. sry,我沒有足夠的代表投票了。 –