我编写了一个WPF桌面应用程序,利用Entity Framework来保存数据(代码优先)。我启用了延迟加载,效果很好。
对于我的一些实体,我需要在每次通过延迟加载实例化时实现一些代码。例如,我将一些Datatables保存为数据库中的列表,并且只要实体延迟加载,就希望将这些列表转换回Datatables。
我不想为整个项目进行这种转换(因为这不仅可能有点昂贵,但对于某些项目,总对象可能超过可用的RAM)。我还有一个我希望运行的“自定义”代码包含在一个方法中。因此,延迟加载是完美的,我只需要在每次加载实体时都能运行一些自定义代码。
所以我的问题是:是否有任何我可以使用或订阅的事件(或其他结构/模式),以便每次通过延迟加载初始化实体时都可以运行自定义代码?我不能使用所述实体的无参数构造函数,因为在该阶段尚未加载属性。
答案 0 :(得分:0)
感谢您的评论,我已在相应的get和set访问器中实现了必要的代码。因此,所有属性都是“延迟加载”,这符合我的要求。因此,我的数据表如下所示:
[NotMapped]
public DataTable MyTable
{
get
{
//Deserialize MyTable from byte[] or string property, obtained from database.
}
set
{
//Serialize MyTable to a byte[] or string property, which is saved to database.
}
}