实体延迟加载的自定义代码

时间:2016-01-13 20:06:20

标签: c# wpf entity-framework

我编写了一个WPF桌面应用程序,利用Entity Framework来保存数据(代码优先)。我启用了延迟加载,效果很好。

对于我的一些实体,我需要在每次通过延迟加载实例化时实现一些代码。例如,我将一些Datatables保存为数据库中的列表,并且只要实体延迟加载,就希望将这些列表转换回Datatables。

我不想为整个项目进行这种转换(因为这不仅可能有点昂贵,但对于某些项目,总对象可能超过可用的RAM)。我还有一个我希望运行的“自定义”代码包含在一个方法中。因此,延迟加载是完美的,我只需要在每次加载实体时都能运行一些自定义代码。

所以我的问题是:是否有任何我可以使用或订阅的事件(或其他结构/模式),以便每次通过延迟加载初始化实体时都可以运行自定义代码?我不能使用所述实体的无参数构造函数,因为在该阶段尚未加载属性。

1 个答案:

答案 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.
  }
}