EF Serialize:ICollection

时间:2012-07-30 06:31:05

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

我正在研究EF,我希望序列化数据库中的记录,然后取消回复以在控制台应用程序中显示它。

以下是该应用程序的两个类:

[Serializable()]
public class Product : ISerializable
{
    public int ProductID { get; set; }
    public string Productname { get; set; }
    public Decimal? UnitPrice { get; set; }
    public bool Discontinued { get; set; }
    public virtual Category Category { get; set; }

    public Product() { }

    void ISerializable.GetObjectData(
        SerializationInfo info, StreamingContext context)
    {
    }
}

[Serializable()]
public class Category : ISerializable
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }
    public string Description { get; set; }
    public byte[] Picture { get; set; }
    public virtual ICollection<Product> Products { get; set; }



    public Category() { }

    void ISerializable.GetObjectData(
        SerializationInfo info, StreamingContext context)
    {
    }
}

我发现,这会导致错误,因为接口无法序列化,即Category类中的Products。

所以,如果我删除导致错误的下面一行:

public virtual ICollection<Product> Products { get; set; }

程序将成功运行。 (成功序列化和反序列化)

但是,如果删除此行,则延迟加载属性将丢失。

我真的想保留延迟加载属性,有人可以为我建议一个解决方案。谢谢!

0 个答案:

没有答案