2013-02-11 3 views
0

Возможно ли выполнить внешний ключ модели для доступа к другой модели в представлении? Я хочу вернуть один тип модели моему представлению, но получить данные из другой модели. Например, на мой взгляд:Использование связей внешних ключей в объекте Views

@[ModelObject].[Field (ForeignKey)].[ForeignKey Field] 

Edit:

Ваш отзыв был полезным до сих пор, и это звучит как вид Модель может быть путь, но позвольте мне, чтобы обеспечить немного больше информации, чтобы вы могли лучше посоветовать.

У меня есть x.Id, и я хочу, чтобы найти все Y объекты, связанные с x.Id - это отображение проводится в таблице XYMap где несколько Y.Id сек карте одному X.Id. Обе эти модели находятся в одной и той же сущности:

public class X 
{ 
    [Key] 
    public int xId {get; set;} 
} 

public class XYMap 
{ 
    [Key, ForeignKey("Y")] 
    public int yId { get; set; } 

    [ForeignKey("X")] 
    public int xId { get; set; } 
} 

public class Y 
{ 
    [Key] 
    public int yId { get; set; } 
} 

То, что я пытался сделать это, дается x.Id называется someXid:

var yIdList = db.XYMap.Where(item => item.xId == someXid).ToList() 

Я хочу, чтобы получить все Y объекты, так что я могу отобразить их данные в представлении.

+2

Если вы используете сущность framework, и вы отобразили навигацию, вы должны просто иметь возможность linq.include ("entity-name"); Я думаю, что это даст вам то, что вы хотите (нетерпеливая загрузка, а не ленивая загрузка) –

+0

Я не отображал навигацию, и поэтому она не показывалась. Получил это сейчас. Все еще интересно, будет ли это приводить к чрезмерным хитам db, как сказано ниже. –

+0

это должно привести к противоположному. Нежелательная загрузка. Передача полезных нагрузок будет больше. Но MVC оптимизирован для их обработки. –

ответ

1

Возможно, но не рекомендуется. Возможно, навигационное свойство настроено с ленивой загрузкой и вызовом @ Model.NavigationalField из результатов просмотра в вызове базы данных. Взгляд не должен отвечать за подобные вызовы.

Я бы рекомендовал создать ViewModel, который объединяет свойства, которые вам нужны от обоих объектов.

+1

Заметное снижение производительности при ленивых объектах загрузки через представление. –

+0

I избегали бы ленивой загрузки. У увеличенных полезных нагрузок есть свои собственные хиты. –

Смежные вопросы