2011-11-29 23 views
1

我想更新我的表中的字段,並在另一個表中插入一些關於在我的網站上登錄成功的用戶的信息。 這是我的代碼:在asp.net中同時插入和修改兩個不同的表mvc

public class CustomerModels:ItemEntityDataContext 
{ 

    public bool ValidateCustomer(string username, string password) 
    { 
     var user = this.DataContext.Customers 
            .Where(s => s.ActiveInWebLogin == 1 && 
            s.WebAccount == username && 
            s.Password == password) 
            .SingleOrDefault(); 

     if (user != null) 
     { 
      this.UpdateCustomerLastUpdateStatus(user); 
      return true; 
     } 
     return false; 
    } 



    public void UpdateCustomerLastUpdateStatus(Customer c) 
    { 
     c.LastWebLogIn = DateTime.Now; 

     String ipAddress = System.Web.HttpContext.Current.Request.UserHostAddress; 

     WebsiteTracking web_track = new WebsiteTracking(); 
     web_track.IDUser = c.ID; 
     web_track.ActiveLoginDate = DateTime.Now; 
     web_track.IPAddress = ipAddress; 

     this.DataContext.SaveChanges(); 


    } 


} 

當我寫這一點,只修改客戶表中的字段LastWebLogIn,但不能插入到外地表WebsiteTracking。

任何人都可以解決這個問題?謝謝。

回答

1

您可能需要將創建的WebsiteTracking添加到集合this.DataContext.WebsiteTracking。其他方法是使用User對象的WebsiteTracking屬性。直到你使用其中的一個DataContext對web_track對象不知道任何東西。

public void UpdateCustomerLastUpdateStatus(Customer c) 
{ 
    c.LastWebLogIn = DateTime.Now; 

    String ipAddress = System.Web.HttpContext.Current.Request.UserHostAddress; 

    WebsiteTracking web_track = new WebsiteTracking(); 
    web_track.ActiveLoginDate = DateTime.Now; 
    web_track.IPAddress = ipAddress; 

    c.WebsiteTracking.Add(web_track); 

    this.DataContext.SaveChanges(); 


} 
+0

是的我想添加到該表,但它沒有奏效。 – Nothing

+0

我編輯了我的答案。 –

+0

web_track.User不工作,因爲它沒有在我的表中包含'用戶'的定義。 – Nothing

1

要更新的LINQ對象到SQL:

  1. 第一訪問對象
  2. 更新它們的值
  3. 執行Context.SubmitChanges();

檢查修改後的代碼。 您可以在時間更新多個對象,但必須注意對象/實體類創建的外鍵關係/或規則。

 public void UpdateCustomerLastUpdateStatus(Customer c) 
     { 
     using (var context = new this.DataContext()) 
    // if you have created object on page then it may no need to create object again for DataContext 
     { 

Customer cust = DataContext.Customer.Single(cu => cu.ID == c.ID); 
// Validate cust that your Customer Id if it is supposed to be null reference issue. 
cust.LastWebLogIn = DateTime.Now; 

      String ipAddress = System.Web.HttpContext.Current.Request.UserHostAddress; 

      WebsiteTracking web_track = new WebsiteTracking(); 
      web_track.ActiveLoginDate = DateTime.Now; 
      web_track.IPAddress = ipAddress; 

      cust.WebsiteTracking.Add(web_track); 
      //or 
      DataContext.WebsiteTracking.Add(web_track); 

      this.DataContext.SaveChanges(); 
     }    

     } 
+0

這不是工作Niranjan Kala – Nothing

+0

它應該工作..當你通過客戶對象,然後不需要從數據庫訪問..我認爲可能有一些LInqtoSql文件的問題..跟蹤錯誤使用實體類中的斷點你已經創建.. –

相關問題