2011-07-19 42 views
3

在下面的代碼中,我保存了一個新用戶,然後抓取該用戶的ID作爲相關地址記錄中的FK。 PK在數據庫中被定義爲標識列。我的問題,我需要調用dc.SaveChanges();在將人添加到對象集之後?有沒有辦法避免去數據庫獲取ID然後將其作爲FK傳遞給地址?我可以將兩個savechanges()放到一個操作中嗎?我是否需要.SaveChanges()才能獲取外鍵的ID?

  PlaygroundEntities dc = new PlaygroundEntities(); 

      Person person = new Person 
           { 
            FirstName = txtFirstName.Text, 
            LastName = txtLastName.Text 
           }; 

      dc.People.AddObject(person); 
      dc.SaveChanges(); 

      Address address = new Address 
            { 
             PeopleId = person.Id, 
             Address1 = txtAddress.Text, 
             City = txtCity.Text, 
             State = txtState.Text, 
             ZipCode = txtZipCode.Text 
            }; 

      dc.Addresses.AddObject(address); 
      dc.SaveChanges(); 

回答

6

只要person.Id是自動生成的密鑰,沒有辦法檢索person.Id沒有查詢。 但是,如果讓person.Id的目的只是爲了創建地址,你並不需要解決person.Id,你只是地址添加人如下:

Person person = new Person 
        { 
         FirstName = txtFirstName.Text, 
         LastName = txtastName.Text, 
         Address = new Address 
           { 
            Address1=txtAddress.Text, 
            City=txtCity.Text, 
            State=txtState.Text, 
            ZipCode=txtZipCode.Text 
           } 
        } 

dc.People.AddObject(person); 
dc.SaveChanges(); 

就是這樣。

0
Person person = new Person 
    { 
           FirstName = txtFirstName.Text, 
           LastName = txtLastName.Text 
          }; 


     Address address = new Address 
           { 
            People = person, 
            Address1 = txtAddress.Text, 
            City = txtCity.Text, 
            State = txtState.Text, 
            ZipCode = txtZipCode.Text 
           }; 

     dc.Addresses.AddObject(address); 
     dc.SaveChanges(); 

根據你的例子,而不是保存和添加id,添加對象引用,然後保存一次。

相關問題