1

我正在研究 EF,我想序列化数据库中的记录并反序列化以在控制台应用程序中显示它。

这是应用程序的 2 个类:

[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; }

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

但是,如果我删除了这一行,lazyloading 属性将会丢失。

我真的很想保留延迟加载属性,任何人都可以为我提出解决方案。谢谢!

4

0 回答 0