我有一个名为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。:我正在使用实体框架
答案 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
。
当你需要论坛数据对线程对象进行一些处理时,公开导航属性会有所帮助。