EF接口 - 按相关类型获取对象

时间:2012-12-09 19:45:08

标签: c# entity-framework design-patterns code-first entity-framework-5

我正在尝试构建一组可重用的EF模型和接口。一个这样的接口称为ICategorised,如下所示:

public interface ICategorised {
    int CategoryID { get; set; }
    Category Category { get; set; }
}

以下是Category对象的样子:

public class Category {
    public int CategoryID { get; set; }
    public string Title { get; set; }
    public Type Type { get; set; } // Is 'Type' the wrong type for this?
    public string Description { get; set; }
}

我非常喜欢这个原理,但我对于如何最好地获取并为任何实现ICategorised的对象设置Type感到有点困惑。我的最终目标是能够创建一个对象,例如:

public class Car : ICategorised {
    public int CarID { get; set; }
    public string CarName { get; set; }
    public int CategoryID { get; set; }
    public Category Category { get; set; }
}

..并且能以某种方式查询Categories Type==Car

1 个答案:

答案 0 :(得分:1)

我认为您应该重新考虑ICategorized作为存在类型的当前用法。在我看来,实际上这应该是Category,因为CategoryICategorized中的所有内容提供了定义,但目前并未真正实现它。如果您想保留ICategorized,我会Category将其作为第一点实施。

其次,我会使Category abstract因为它不应该直接实例化。然后,您创建的Car和任何其他分类类将直接从abstract Category派生。如果你改变你的等级,如上所述,这也会使他们ICategorized

在我想到之后,这将实现你的目标,并导致一个更清晰的层次结构,可以为未来的类型扩展。然后,您可以直接在Type查询,因为每个特定的Category子类都会设置明确的Type,例如Car

希望有所帮助,或者至少是朝着正确方向迈出的一步。