如何确保从DAL返回对象时始终填充某些属性?

问题描述:

我有一个Question类,它有一个属性OptionList,这不过是一个列表。问题和选项存储在数据库中的差异表中。如何确保从DAL返回对象时始终填充某些属性?

现在有些时候,我只需要Question对象而没有它的关系属性,也就是映射到db中不同表的实体的属性。因此在这种情况下,我不需要填充OptionList。

但是,然后再次有时我需要填充OptionList属性。

我现在想的方法是有两种不同的方法。

public Question GetQuestionByID(int qid) 

public Question GetQuestionWitOptions(int qid) 

因此,如果我打电话给第二个方法,我确保OptionList填充到返回的Question对象中。

这是实现这样一个结果的好方法吗?任何备用的想法和建议?

我会说这是一个不错的方法。您正在使用具有明显目的和功能的定义名称。

唯一的其他建议,我能想到的是创建第二类:

public class QuestionExtended : Question 
{ 
    public QuestionExtended(IEnumerable<Option> options) : base() 
    { 
     OptionList = new List<Option>(options); 
    } 

    public List<Option> OptionList { get; private set;} 
} 

所以后来的实际类的实现提供了一个明显的意义,什么是它里面的,什么是需要它。

你有什么可能是最简单的,并清楚地说明方法在做什么。

的唯一选择就是写一个重载的版本:

public Question GetQuestion(int qid, bool withOptions = false)