2017-08-02 14 views
0

を経由してそれを更新:表の値をチェックし、私は、テーブル内の値をチェックし、それが特定の条件に合う場合は、それを更新したかったが、私は、私は右のそれをやっているとは思わないRestAPI

public void UpdateUsertoActive(string email) 
    { 
     var token = ApiLogin(); 
     string filter = $"Email_Address = '{email}'"; 
     var contactstatus = new List<string> 
     {"Contact_Status_ID"}; 
     var activestatus = _ministryPlatformRest.UsingAuthenticationToken(token).Search<MpMyContact>(filter, contactstatus); 
     if (activestatus.Equals(2)) 
     { 
      activestatus = _ministryPlatformRest.UsingAuthenticationToken(token).UpdateRecord("dbo.Contacts", GetContactIdByEmail(email), contactstatus); 
     } 
     else 
     {//do nothing} 
    } 

私はContact_Status_IDを確認したいと思います。 if it is == 21に変更し、それ以外の場合は何もしないでください。あなたは、ステータスを見つけて、ちょうど手順で更新ステートメントを発行するすべてのコードをスワップアウトすることにより、このロット簡単にすることができ

namespace MinistryPlatform.Translation.Models 
{ 
    [MpRestApiTable(Name = "Contacts")] 
    public class MpMyContact 
    { 
     public int? Address_ID { get; set; } 
     public string Address_Line_1 { get; set; } 
     public string Address_Line_2 { get; set; } 
     public int? Contact_Status_ID { get; set; } 
    } 
} 
+0

ここには多くの情報がありません。 .Search()は実際に何を返しますか? .Equalsを使用して平等をチェックすると、タイプが明確でないときに落とし穴が生じます。例えばactivestatusは文字列で、整数と照合しています。 .Equalsはfalseを返します。ヒント:戻り値の型が100%クリアでない場合は、 'var'を使用しないでください。 :) – FunkyPeanut

+0

あなたは十分な情報を提供しませんでした。何が問題ですか?メソッド定義は何ですか? –

+0

あなたは 'contactstatus'に何を持っていますか?空のリストを作成し、パラメータとして送信します。 '.Search()'の返り値 –

答えて

2

この

はContact_Status_IDから来て、そこから連絡先のモデルです。このようなもの。基本的には、コードが実行しているのは、行がそのステータスに存在するかどうかを確認するクエリを実行することです。存在する場合は、2番目のクエリを実行して更新します。それを更新するだけではリソースの消費量がはるかに少なくなります。

create procedure UpdateUsertoActive 
(
    @EmailAddress varchar(500) 
) as 
    set nocount on; 

    Update YourTable 
    set Contact_Status_ID = 2 
    where Contact_Status_ID = 1 
     and Email_Address = @EmailAddress 
関連する問題