Как мне связать модель с другой моделью в MVC3? - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть класс с именем Forum и другой класс с именем Thread.

Класс Thread содержит свойство, которое связывает его с Forum. Должно ли это свойство быть каким-то идентификатором (будь то GUID, int или другое):

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

или должно быть типа Forum:

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

Какой лучший способ сделать это? Должно ли это быть первым, как это будет отображаться в базе данных?

PS: я использую Entity Framework

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Было бы лучше, если вы выставите скалярное свойство и навигационное свойство следующим образом.

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

    public GUID ForumID { get; set; }

    public virtual Forum Forum { get; set; }
}

Если вы создаете Thread и знаете только ForumID, вы можете легко создатьнить, если вы выставите ForumID.В противном случае вам придется либо загрузить соответствующий объект Forum из базы данных, либо создать фиктивный объект и прикрепить его к ObjectContext/DbContext.

. Предоставление навигационного свойства поможет вам, когда вам понадобятся данные форума для некоторой обработки.на объекте потока.

2 голосов
/ 19 ноября 2011

Если вы сначала подумаете о дизайне: 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 передя здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...