Linq to sql Вставка объектов присоединенного объекта - PullRequest
2 голосов
/ 08 августа 2011

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

У меня есть две таблицы (в этом примере я игнорирую userID)

Темы -> TopicID, Title

Сообщения -> PostID, TopicID, Content

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

У меня есть код, который работает нормально 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 генерируется автоматически, и обе записи вставляются в базу данных, или ни одна из них не является

РЕДАКТИРОВАТЬ:

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

1 Ответ

2 голосов
/ 08 августа 2011

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

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

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

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