保存期间的延迟加载

时间:2016-11-11 10:26:42

标签: c# oop design-patterns lazy-loading

我正在使用延迟加载“关系”属性并在保存对象时挣扎,因为当我在保存之前检查一切是否正常时,我检查的属性从数据库加载,丢失了对象的“保存”状态。 考虑这个伪代码:

  public class Project 
  {
    private int _ProjectId;
    private string _ProjectName;
    private ProjectType _ProjectType;
    public int ProjectId
    {
      get { return _ProjectId; }
      set { _ProjectId = value; }
    }
    public string ProjectName
    {
      get { return _ProjectName; }
      set { _ProjectName = value; }
    }
    public ProjectType ProjectType
    {
      get
      {
        if (_ProjectId != 0 && _ProjectType == null)
        {
         ... load _Projectype from db here
        }
        return _ProjectType;
      }
      set
      {
        _ProjectType = value;
      }
    }
    public Project Save()
    {
      if(this.ProjectType != null) // <<-- if the _projectId is != 0 (typically during updates or delete operations, the prop is loaded from the db!!!
          adpt.Save(this);
    }
}

当控件在类中时,我当然可以引用私有成员以避免动态加载,但如果有人从外部使用该对象会怎么样?一个简单的测试“if(Prj.ProjectType!= null)”将无意中加载该属性。

似乎我需要一个状态来阻止保存操作期间的加载,我想知道是否有一个模式可以帮助我。

非常感谢,安东尼奥

0 个答案:

没有答案