2016-08-30 12 views
-1

私はセレンオートメーションテスターとして働いています。私はテーブルが階層を持っているので、ビジュアル2013のdatamodelにテーブルを追加しようとしました、それはエラーをスローしました。だから、私はビューを使用して回避策を見つけた。今私はsqlを使用してビュー内の値を更新する必要があります。私は使用しましたlinqデータベースビューの値を更新する

var acct = context.Regression_TestAccounts.Where(f => f.Account_ID.Equals(acctId)) 
              .FirstOrDefault(); 

acct.AvailableDailyCreditLimit_Amt = acct.ApprovedDailyCreditLimit_Amt; 
acct.AvailableTotalCreditLimit_Amt = acct.ApprovedTotalCreditLimit_Amt; 

これは値を変更していません。これを手伝ってもらえますか?

+2

あなたは 'context.SaveChanges()'を呼び出していますか? –

答えて

0

あなたには欠けているコードがたくさんあります。これはセレンの問題ではありません。それは「私はEntity Frameworkを知らない」問題です。まず、SaveChanges()に電話して、オブジェクト内の更新を永続化できるようにする必要があります。また、更新中に発生する可能性のある問題を元に戻すことができるように、Transactionsを使用することをお勧めします。また、hereは、エンティティの状態を追加/追加する方法に関する記事です。この方法でオブジェクトを更新できます。

public void Update(int acctId) 
{ 
    using(var context = new Context()) 
    { 
     using(var dbContextTransaction = new context.Database.BeginTransaction()) 
     { 
      try 
      { 
       //improved query 
       var acct = context.Regression_TestAccounts 
            .FirstOrDefault(f => f.Account_ID == acctId); 

       if(acct == null) //don't just return, tell the user there was no update 
        return; 

       acct.AvailableDailyCreditLimit_Amt = acct.ApprovedDailyCreditLimit_Amt; 
       acct.AvailableTotalCreditLimit_Amt = acct.ApprovedTotalCreditLimit_Amt; 

       context.Entry(acct).State = acct.Account_ID == 0 
              ? EntityState.Added 
              : EntityState.Modified; 
       context.SaveChanges(); 
       dbContextTransaction.Commit(); 
      } 
      catch (Exception ex) 
      { 
       dbContextTransaction.Rollback(); 
       throw; 
      } 
     } 
    } 
} 
関連する問題