2015-10-25 4 views
0

Я этот -simplified- класс модели:Автоматическое заполнение навигационных свойств?

public class Transaction 
{ 
    public string Id { get; set; } 
    public virtual UserResource Resource { get; set; } 
} 

И АНИ контроллер MVC Web:

// POST api/values 
[HttpPost] 
public void Post([FromBody]Transaction transaction) 
{ 
} 

И мое тело запроса, как это:

{"Id":"5520AEB9-DAD8-4C85-80A7-3257931B9790","ResourceId":"118547FC-0B3A-4816-820C-93BF2BA1BF14"} 

В post method, transaction.Resource - null. И я не знаю, как заставить его быть заполнены с помощью Id ресурса я прошел ...

То, что я пытался до сих пор:

  1. Добавить public string ResourceId {get; set;} и пометить его как ForeignKey в Сделке .. . -> без изменений
  2. В запросе измените параметр ResourceId на «Ресурс»: {Id: ".."} -> transaction.Resource больше не пуст, но он не запросил таблицу ресурсов, чтобы заполнить что-либо. ..
  3. Mark Ресурс как виртуальный или нет (Lazy loading или Eager) -> Без изменений

Идеи?

+0

Ваш JSON не имеет 'Resource' свойство. Для вашего attemp # 2 вы ожидаете, что фреймворк выберет из вашей базы данных объект «Ресурс» с помощью «ResourceId»? –

+0

Я не знаю об EF7, но я знаю, что у вас должен быть объект DBContext, а затем прикрепите свою модель к нему, чтобы получить модель, заполненную из базы данных. – mfarouk

+0

@FrankFajardo, True. –

ответ

1

Вы не передаете объект Resource в ваш API, вы должны либо передать его, либо получить API, что это такое, я не предлагаю его последнему.

Так как это Entity Framework 7, вы не можете использовать ленивую загрузку в этот момент времени, пока она еще не существует (в рамках).

Текущие roadmap спискам как высокий приоритет, и они заявляют:

Эти особенности имеют высокий приоритет, но мы думаем, что EF7 будет убедительным релизом для подавляющего большинства приложений без них.

Так вместо этого, в запросе необходимо вручную включить все ваши навигационные свойства, например:

var data = context.Transactions 
    .Include(t => t.Resource) 
    .Where(t =>t.Id = 1); 
+0

Благодарим за отзыв. Меня интересует, что мне следует делать в методе Post? –

+0

Ничего особенного, если приложение, размещающее данные, правильно отправляет его. – DavidG

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