2017-07-30 3 views
0

Je suis nouveau sur ce site. Je travaille actuellement sur wcf. J'essaye d'accomplir quelque chose de ce travail dur mais je fais face à quelques problèmes. J'ai le service de WCF fonctionnant dans mon MS Visual Stuido 2015 qui a la classe locale nommée AccountBalance et cette classe a obtenu plusieurs propriétés de chaîne comme account_number, account_balace etc. dans le serveur MS SQL. Actuellement, je consomme le service wcf dans une application console. J'essaie de récupérer l'enregistrement de la base de données dans la fenêtre de la console en utilisant le numéro de compte comme clé. quand j'entre le numéro de compte il devrait montrer le reste de l'enregistrement de la base de données dans l'application de console mais j'obtiens l'erreur en disant cela et je ne peux pas l'exécuter. ne peut pas convertir 'string' à MyService.AccountBalanceRequest » est code de la classe qui hérite d'une autre classe de base ..Consommation du service WCF dans l'application console

  [DataContract] 
     public class AccountBalanceRequest : Current_Account_Details 
      { 
    string account_number; 

    [DataMember] 
    public string Account_Number 
    { 
     get { return account_number; } 
     set { account_number = value; } 
    } 
} 

}

est ici CODE ADO.NET ..

 public bool AccountBalanceCheek(AccountBalanceRequest accountNumber) 
    { 
     using (SqlConnection conn = new SqlConnection(ConnectionString)) 
     { 
      conn.Open(); 
      using (SqlCommand cmd = new SqlCommand("SELECT * FROM 
      Current_Account_Details WHERE Account_Number ='" + 
       accountNumber.Account_Number + "'", conn)) 
      { 
       cmd.Parameters.AddWithValue("@Account_Number", 
       accountNumber.Account_Number); 
       cmd.CommandType = CommandType.Text; 
       cmd.ExecuteNonQuery(); 
       return true; 

      } 

     } 
    } 

Voici Console code d'application ..

 public static void Balance() 
    { 
     MyService.HalifaxCurrentAccountServiceClient currentAccount = new MyService.HalifaxCurrentAccountServiceClient("NetTcpBinding_IHalifaxCurrentAccou 
      ntService"); 

     MyService.AccountBalanceRequest cs = new MyService.AccountBalanceRequest(); 


     string AccountNumber; 


     Console.WriteLine("\nEnter your Account Number--------:"); 
     AccountNumber = Console.ReadLine(); 
     cs.Account_Number = AccountNumber; 
     MyService.AccountBalanceRequest cs1 = 

    currentAccount.AccountBalanceCheek(AccountNumber);//Error on this line. 

       Console.WriteLine("Your Account Number is :" + cs.Account_Number); 
       Console.WriteLine("Your Account Type :" + cs.Account_Balance); 
       Console.WriteLine("Your Account Account Fee :" + cs.Account_Fee); 
       Console.WriteLine("Your Account Balance:" + cs.Account_Balance); 
       Console.WriteLine("Your Account Over Draft Limit :" + cs.Over_Draft_Limit); 

       Console.Write("--------------------------"); 
       Console.ReadLine(); 




    } 

J'ai également essayé de cette façon aussi. le code a généré une erreur mais n'a pas donné le résultat escompté. voici le code.

public static void Balance() 
    { 
     MyService.HalifaxCurrentAccountServiceClient currentAccount = new MyService.HalifaxCurrentAccountServiceClient("NetTcpBinding_IHalifaxCurrentAccountService"); 
     MyService.AccountBalanceRequest cs = new MyService.AccountBalanceRequest(); 


     string AccountNumber; 


     Console.WriteLine("\nEnter your Account Number--------:"); 
     AccountNumber = Console.ReadLine(); 
     cs.Account_Number = AccountNumber; 
     // MyService.AccountBalanceRequest cs1 = currentAccount.AccountBalanceCheek(AccountNumber); 



     if (currentAccount.AccountBalanceCheek(cs)) 
     { 

       Console.WriteLine("Your Account Number is :" + cs.Account_Number); 
       Console.WriteLine("Your Account Type :" + cs.Account_Balance); 
       Console.WriteLine("Your Account Account Fee :" + cs.Account_Fee); 
       Console.WriteLine("Your Account Balance:" + cs.Account_Balance); 
       Console.WriteLine("Your Account Over Draft Limit :" + cs.Over_Draft_Limit); 

       Console.Write("--------------------------"); 
       Console.ReadLine(); 
       //Console.Clear(); 


     } 

    } 

Voici l'image pour la sortie. This is image of the out put

+0

Des suggestions ou des solutions? – Rasel

+1

Indice: Où remplissez-vous les valeurs lues dans la base de données sur votre objet? Vous utilisez '@ Account_Number', MAIS votre instruction SQL ne l'utilise PAS. – Subbu

+0

Ok. Dans ado.net et l'application console – Rasel

Répondre

0

droit chemin est:

currentAccount.AccountBalanceCheek(cs); 

Non:

currentAccount.AccountBalanceCheek(AccountNumber); 

Parce que le type de paramètre est MyService.AccountBalanceRequest, pas string. Je souhaite être utile pour vous :)

+0

J'ai essayé, mais quand j'entre le numéro de compte dans la fenêtre de la console son seul numéro de compte pinte, mais pas l'enregistrement de la base de repos. Merci Ali – Rasel