我应该如何将模型链接到MVC3中的另一个模型?

时间:2011-11-19 12:48:06

标签: entity-framework model

我有一个名为Forum的班级和另一个名为Thread的班级。

班级Thread包含一个将其与Forum相关联的媒体资源。该属性应该是某种ID(无论是GUID,int还是其他):

public class Thread
{
    public GUID ID { get; set; }
    public GUID ForumID {get; set; }
}

或者它应该是论坛类型:

public class Thread
{
    public GUID ID { get; set; }
    public Forum ParentForum { get; set; }
}

最好的方法是什么?应该是前者,因为它会出现在数据库中吗?

PS。:我正在使用实体框架

2 个答案:

答案 0 :(得分:2)

如果您首先考虑设计:如果没有Thread,则Forum不能存在。因此我建议你使用:

public class Thread
{
    public GUID ID { get; set; }

    [ForeignKey("ForumId")]
    public Forum Forum { get; set; }

    public Guid ForumId {get; set; }
}

(我假设您使用Code First?)

我认为上面的内容会有效,我在这里没有VS 2010。

答案 1 :(得分:2)

如果您公开标量属性和导航属性,如下所示会更好。

public class Thread
{
    public GUID ID { get; set; }

    public GUID ForumID { get; set; }

    public virtual Forum Forum { get; set; }
}

如果您要创建Thread并且只知道ForumID,则可以在公开ForumID时轻松创建该线程。否则,您必须从数据库加载relavent Forum对象或创建一个虚拟对象并将其附加到ObjectContext/DbContext

当你需要论坛数据对线程对象进行一些处理时,公开导航属性会有所帮助。