2

У меня есть таблица с книгами и таблица с авторами, созданная с помощью модели-первой. В книге Books есть свойство навигации, указывающее на AuthorID (потому что в каждой книге есть автор) здесь я пытаюсь заполнить таблицы значениями, и это нормально, когда дело доходит до скалярных свойств. Но как добавить ценность для свойства навигации? Моя навигация свойство называется AuthorBook enter image description hereКак добавить свойство навигации вручную сначала модель модели

Book book1 = new Book(); 
Author author1 = new Author(); 
author1.Surname = "Dickens"; 
author1.Name = "Charles"; 
db.AuthorSet.Add(author1);` 
hbook1.Title = "Great Expectations"; 
book1.Genre = "Novel" 
db.BookSet.Add(book1); 
db.SaveChanges(); 

'

+0

Не следует ли автору писать * -> *? –

+0

@AluanHaddad, что вы имеете в виду? –

+0

Эти книги обычно могут иметь несколько авторов. Может быть, не в вашем домене. –

ответ

1

попробовать что-то вроде этого:

var rel = new AuthorBook { Book = book1, Author = author1 }; 
book1.AuthorBook.Add(rel); 

, что, очевидно, идет перед SaveChanges();

+0

И как заполнить другое навигационное свойство? соединение Один-ко-многим Многие книги в одном месте Я уже создал местоположение 'Местоположение location1 = новое Местоположение(); location1.Floor = "2"; location1.Cupboard = "3"; location1.Section = "1"; location1.Shelf = "2"; location1.Row = "1"; db.LocationSet.Add (location1); ' Я попытался заполнить местоположение так же, как вы предложили написать AuthorBook, но визуальная студия подчеркивает его красным. И AuthorBook не подчеркивается, что хорошо –

+0

, если это место существует, вам нужно будет выбрать его первым, а затем добавить его в книгу (как автор). –

+0

Но я не могу добавить его, написав тот же код, что и для автора. –

0
Book book1 = new Book(); 
book1.Title = "Great Expectations"; 
book1.Genre = "Novel" 

// Add 1 or more authors 
Author author1 = new Author(); 
author1.Surname = "Dickens"; 
author1.Name = "Charles"; 

// AuthorBook better be a collection since a book can have 1 or many authors 
book1.AuthorBook.Add(author1); 

db.BookSet.Add(book1); 
db.SaveChanges(); 

Приведенный выше код будет создан один запись в Book стол, 1 в Author и один в AuthorBook. Вам не нужно вручную добавлять элемент в код до AuthorBook, так как EF позаботится об этом для вас.

+0

Нет, если я пишу так: 'book1.AuthorBook.Add (author1);' visual studio подчеркивает author1 –

+0

подчеркивает и говорит что? – CodingYoshi

+0

Тип аргумента «WpfApplication1.Author» не присваивается классу пармерометра «WpfApplication1.AuthorBook» –