我正在研究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; }
程序将成功运行。 (成功序列化和反序列化)
但是,如果删除此行,则延迟加载属性将丢失。
我真的想保留延迟加载属性,有人可以为我建议一个解决方案。谢谢!