序列化没有子类的EF对象

时间:2014-05-28 15:12:03

标签: entity-framework c#-4.0 xml-serialization

尝试序列化时,编译器会抛出一个错误,指出由于ICollection<ChildrenClass>属性,它无法序列化我的EF对象。

有没有办法在没有子类的情况下序列化EF对象?

1 个答案:

答案 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; }
    }
}