尝试序列化时,编译器会抛出一个错误,指出由于ICollection<ChildrenClass>
属性,它无法序列化我的EF对象。
有没有办法在没有子类的情况下序列化EF对象?
答案 0 :(得分:0)
您应该在poco模型上使用AutoMapper和JsonIgnore属性。
EF等级:
public class Customer
{
public int ID { get; set; }
public ICollection<ChildrenClass> MyChildren { get; set; }
}
POCO模型:
public class CustomerModel
{
public int ID { get; set; }
[JsonIgnore]
public ICollection<ChildrenClass> MyChildren { get; set; }
}
AutoMapper:
var customer = customerService.GetByID(1);
Mapper.CreateMap<Customer, CustomerModel>()
.ForMember(c => c.MyChildren, o => o.Ignore())
var customerModel = Mapper.Map<CustomerModel>(customer);
var json = JsonConvert.Serialize(customerModel);
或者您可以不在模型类中包含MyChildren属性。
您也可以使用MetaData类来标记EF模型,但我还没有尝试过:
[MetadataType(typeof(CustomerMetadata))]
public partial class Customer
{
internal class CustomerMetadata
{
[JsonIgnore]
public ICollection<ChildrenClass> MyChildren { get; set; }
}
}