在我的設計我有了其類型可以被繼承屬性的類:如何防止Json.NET使用Entity Framework代理類型名稱?
public class Feed
{
...
[JsonProperty(TypeNameHandling = TypeNameHandling.Auto)]
public FeedSource Source { get; set; }
...
}
public abstract class FeedSource { ... }
public class CsvSource : FeedSource { ... }
public class DbSource : FeedSource { ... }
我使用實體框架加載這個對象存儲到數據庫中,我使用JSON。 NET將此對象序列化爲JSON以供進一步處理。
我偶然發現的問題是$type
屬性包含EF代理的類型名稱而不是「真實」類型名稱。因此,而不是:
$type: "System.Data.Entity.DynamicProxies.CsvSource_0B3579D9BE67D7EE83EEBDDBFA269439AFC6E1122A59B4BB81EB1F0147C7EE12"
這是毫無意義的其他客戶,我想獲得:
$type: "MyNamespace.CsvSource"
在我的JSON
。
達到此目的的最佳方法是什麼?
是禁止使用/創建代理對象這個代碼路徑的選項? EF的只讀/急切使用似乎並不需要它AFAICT? –
避免代理生成(或通過將'ProxyCreationEnabled'設置爲false來禁用它)可能是在某些情況下適用的一種策略。但是,在其他情況下,這是不適用的,我的問題仍然存在。 – Dejan
[Serialization of Entity Framework objects with One to Many Relationship](http://stackoverflow.com/questions/13077328/serialization-of-entity-framework-objects-with-one-to-many-relationship) –