Navigationプロパティを使っている場合、JsonとしてSerializeするときに循環参照する事があります
少々、強引ですがForeignKeyAttribute
が付いているプロパティをJsonIgnore
するContractResolver
です
JsonIgnoreAttibute
を使うという方法もありますが設定数が多くなるため書きました
public class ForeignKeyIgnoreContractResolver : DefaultContractResolver
{
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
var property = base.CreateProperty(member, memberSerialization);
var foreignKeyAttribute = member.GetCustomAttribute<ForeignKeyAttribute>();
if (foreignKeyAttribute != null)
{
property.Ignored = true;
}
return property;
}
}
デフォルト設定として使う場合
var settings = new JsonSerializerSettings
{
ContractResolver = new ForeignKeyIgnoreContractResolver()
};
JsonConvert.DefaultSettings = () => settings;