EF Core 实体JSON序列化

最近因为工作的问题接触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());});

你可能感兴趣的:(EF Core 实体JSON序列化)