2011-08-07 23 views
2

我正在學習Linq to sql,並且遇到了「插入連接的實體對象」我測試了本書中的示例,它工作正常,但有人可以解釋我如何編輯它在我的例子工作Linq to sql插入連接的實體對象

我有兩個表(我將在這個例子中忽略用戶ID)

主題 - > TopicID,標題

帖子 - >帖子ID,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是自動生成,這兩個記錄插入到數據庫或沒有一個

編輯:

LOOL,我再次測試了它,似乎這樣的代碼工作正常,如果我只是評論這兩條線,但腠有人解釋我what will happen如果主題插入到數據庫中,但計算機突然關閉,並且在數據庫中留下未保存的文章。它會回到角色並刪除主題,否則我會在數據庫中有沒有帖子的主題?

+0

你在這張表中有一些獨特性限制嗎? – bbennoun

回答

2

您應該跳過顯式設置TopicID並使用Topic屬性(對Topic的實例的對象引用而不是ID)構建關係。

這看起來像這樣。

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

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

它適用於L2S –