2011-08-07 3 views
2

Я изучаю Linq для sql, и я наткнулся на «Вставка прикрепленных объектов Entity». Я испытал пример из книги, и он отлично работает, но кто-нибудь может объяснить мне, как его редактировать работать на моем примереLinq to sql Вставка прикрепленных объектов объекта

у меня есть две таблицы (я игнорирующие идентификатор_пользователя в этом примере)

темы -> TopicID, Название

Сообщения -> сообщения дан, TopicID, содержание

Теперь, когда пользователь создает новую тему, я должен создать новую тему h содержит подробную информацию об этом и новое сообщение, которое содержит сведения об этом сообщении, однако проблема заключается в том, что я должен сразу вставить эти две таблицы в базу данных, так как я не хочу иметь тему и не назначать ей пост.

У меня есть код, который работает отлично if я поставил TopicID вручную, однако я хотел бы жить бесплатно, так он назначается автоматически

  Topic topic = new Topic 
          { 
           TopicID = 1, //how to remove this line 
           Title = "Test", 
           Post = new Post 
            { 
             TopicID = 1, // and this one 
             Content = "some text", 
            } 
          }; 

Так возобновить Я хотел бы удалить эти две строки так TipicID является генерируется автоматически и обе записи вставляются в базу данных или никто не

EDIT:

LOOL, я проверил его еще раз, и кажется, что этот код работает отлично, если я просто закомментируйте эти две строки, но Коу ld кто-то объяснит мне what will happen в том случае, если тема вставлена ​​в базу данных, но компьютер внезапно отключается, и сообщение остается несохраненным в базе данных. Будет ли он воспроизводить и удалять тему, или у меня будет тема без записи в базе данных?

+0

У вас есть некоторые ограничения единственности в двух таблицах. – bbennoun

ответ

2

Вам следует пропустить явно задание TopicID и построить связь с использованием свойства Topic (ссылка объекта на экземпляр темы, а не идентификатор).

Это будет выглядеть так.

Topic topic = new Topic        
{         
    Title = "Test"               
}; 

Post = new Post          
{           
    Topic = topic, 
    Content = "some text" 
}; 
+2

он применяется в L2S –