2017-10-01 5 views
1

私はAngular JSアプリケーションにwcfサービスを使用しています。予想される結果が得られています。私はLinqクエリまたはAngular Jsアプリケーションで何か間違っていると思っています。ここで私が達成しようとしているのは、ユーザー名とパスワードが間違っている場合、メソッドはfalseを返し、試行回数をカウントし始めます。ユーザーが誤ったユーザー名またはパスワードを4回入力すると、アカウントがロックされます。それ以外の場合は、正しいユーザー名またはパスワードを4回入力すると、メソッドはtrueを返し、0に設定されます。Linq照会が期待通りの結果を返すことができません

ここは私のインターフェイスです。

[OperationContract] 
    [WebInvoke(Method = "POST", 
    RequestFormat = WebMessageFormat.Json, 
    ResponseFormat = WebMessageFormat.Json, 
    //BodyStyle = WebMessageBodyStyle.WrappedRequest, 
    UriTemplate = "/AuthenticateUser")] 
    bool AuthenticateUser(UserLogin userLogin); 

ここでメソッドの実装は..です

public bool AuthenticateUser(UserLogin userLogin) 
    { 
     using (HalifaxDatabaseEntities db = new HalifaxDatabaseEntities()) 
     { 
     var attamp = from X in db.tblUsers 
         where X.Username==userLogin.Username&& X.Password== userLogin.Password 

         select X.RetryAttempts!=4; 

      if (attamp!=null) 
      { 
       return true; 

      } 

      else 
      { 

       return false; 
      } 
     } 
    } 

答えて

0

コレクションを返すLINQクエリ(のようなSelectまたはWhere)がnullを返すことはありません。 1つの結果(たとえばFirstまたはSingleなど)を返すクエリのみが可能です。

それが変更されている正確にどのようRetryAttempts明確ではないですが、より良い方法は何かのように次のようになりますまで、ユーザー1からのカウントを4回が、その後にロックされなければならないアカウントが間違ったユーザー名やパスワードを入力して起動した場合、私は意味

// this will return a collection will only one result - true or false 
var attamp = from X in db.tblUsers 
      where X.Username==userLogin.Username&& X.Password== userLogin.Password 
      select X.RetryAttempts!=4; 
//.Single() will give you the value of the one and only result - either true or false 
return attamp.Single(); 
+0

もしそうでなければ、間違ったユーザ名やパスワードを入力しても、usrnameとパスワードが間違っていれば、試行は0から数え、真ならtrueを返します。 –

関連する問題