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

プログラムは正常に実行されます。(シリアライズ、デシリアライズに成功)

ただし、この行を削除すると、遅延読み込みのプロパティが失われます。

遅延読み込みプロパティを維持したいのですが、誰かが私に解決策を提案してくれますか? ありがとう!

4

0 に答える 0