最近因为工作的问题接触net core的Entity Framework。解决的它的序列化问题,给其他遇到的人提供一个解决方案参考。
首先要忽略上下文已经关闭的错误,和脱离的实体懒加载错误。
忽略了错误还要忽略掉实体里的lazyload字段。下面给出newtonsoft Json的配置
JsonSerializerSettings serializerSettings = new JsonSerializerSettings();
serializerSettings.NullValueHandling = NullValueHandling.Ignore;
serializerSettings.ContractResolver = new IngoreLazyLoadResolver();
jsonSerializer = JsonSerializer.Create(serializerSettings);
用这个配置实现nore core mvc的序列化接口
IgnoreLazyLoadResolver这个类的实现是这个的
public class IngoreLazyLoadResolver : CamelCasePropertyNamesContractResolver {
protected override IListCreateProperties(Type type, MemberSerialization memberSerialization) {
IList properties = base.CreateProperties(type, memberSerialization);
return properties.Where(o => !o.PropertyName.Equals("lazyLoader")).ToList();
}
}
然后把序列化实现加到OutputFormatters就行了
services.AddMvc(options =>{options.OutputFormatters.Insert(0,CustomJsonOutputFormatter());});