我正在使用延迟加载“关系”属性并在保存对象时挣扎,因为当我在保存之前检查一切是否正常时,我检查的属性从数据库加载,丢失了对象的“保存”状态。 考虑这个伪代码:
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)”将无意中加载该属性。
似乎我需要一个状态来阻止保存操作期间的加载,我想知道是否有一个模式可以帮助我。
非常感谢,安东尼奥