.net mvc3 один на один - PullRequest
       4

.net mvc3 один на один

0 голосов
/ 16 сентября 2011

Я новичок в .net mvc. Я пытаюсь создать модель с отношением один к одному с другой моделью.

Я хотел бы иметь возможность отображать информацию только для чтения на страницах редактирования для каждой модели об отношении один к одному.

Вот мой код:

public class Thing1 : BaseEntity
{
    public virtual Thing2 thing2 { get; set; }
    [Required(ErrorMessage = "This field is required.")]
    public int Thing2ID { get; set; }

    ... Other basic fields go here
}

public class Thing2 : BaseEntity
{

    ...basic fields
}

Основные поля означают только обычные нереляционные поля.

Теперь с этой моделью легко отобразить данные Thing2 в форме Thing1, но как мне отобразить данные Thing1 в форме Thing2? Есть ли что-то, что я добавляю в модель Thing2, чтобы связать это с thing1?

Справочная информация: я использую mvc3 с кодом сущности и бритвой.

1 Ответ

1 голос
/ 16 сентября 2011

Вероятно, проще всего было бы добавить новое свойство в Thing2 для отношений, таким образом сделав его двунаправленным отношение один к одному

, например

public class Thing2 : BaseEntity
{
    public virtual Thing2 Thing2 { get; set; }
    ...basic fields
}

Затем вам нужно убедиться, что Thing 1 и Thing 2 не синхронизированы. Вы можете сделать это что-то вроде:

public class Thing1 : BaseEntity
{        
    private Thing2 thing2;
    public virtual Thing2 Thing2 { get { return thing2; }  }    

    public void SetThing2(Thing2 thing2)
    {
       this.thing2 = thing2;
       thing2.SetThing1(this);

    }

}

public class Thing2 : BaseEntity
{
    private Thing1 thing1;
    public virtual Thing1 Thing1 { get { return thing1; }  }    

    public void SetThing1(Thing1 thing1)
    {
       this.thing1 = thing1;
       thing1.SetThing2(this);
    }
}

(Извините за опечатку, но вы поняли)

Таким образом, вы можете перейти Thing1.SetThing2(myThing2) (и наоборот), и оба свойства будут установлены.

Без такой установки (то есть, делая свойства доступными только для чтения и создавая удобный метод для одновременной установки обоих свойств), вы рискуете, что объекты не синхронизируются друг с другом - поэтому Thing1 может ссылаться на Thing2 без этого Thing2 ссылается на Thing1.

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