私は 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; }
プログラムは正常に実行されます。(シリアライズ、デシリアライズに成功)
ただし、この行を削除すると、遅延読み込みのプロパティが失われます。
遅延読み込みプロパティを維持したいのですが、誰かが私に解決策を提案してくれますか? ありがとう!