2017-09-28 1 views
1

Linq Query bietet bessere Lesbarkeit und Kompilierungsfehler Vorteile. Ich habe Grundkenntnisse, um Linq Query zu schreiben, aber es gibt einige SQL-Abfragen, die in Linq sehr kompliziert zu konvertieren sind. Hier ist einer, ich bin mit viel Schmerz konfrontiert, um es in Linq umzuwandeln. Wie kann ich unter Sql Anfrage an Linq schreiben.SQL Query Konvertierung in Linq Query In Wcf Servive

public bool CurrentAccountDepositDetails(Current_Account_Deposit_Details current_Account_Deposit_Details) 
     { 
      int j = Convert.ToInt32(current_Account_Deposit_Details.Account_Number); 

      using (SqlConnection con = new SqlConnection(ConnectionString)) 
      { 

       SqlConnection cn = new SqlConnection(ConnectionString); 
       SqlCommand cmd = new SqlCommand("SELECT(*)FROM Current_Account_Details"); 
       // cmd.Parameters.AddWithValue("@Account_Number", depositDetails.Account_Number); 


       SqlTransaction trans; 
       cn.Open(); 
       trans = cn.BeginTransaction(); 
       cmd.Connection = cn; 

       cmd.Transaction = trans; 
       cmd.CommandType = CommandType.Text; 

       cmd.CommandText = "UPDATE Current_Account_Details set Account_Balance=Account_Balance +'" + current_Account_Deposit_Details.Amount + "' where Account_Number ='" + current_Account_Deposit_Details.Account_Number + "'"; 
       //cmd.Parameters.AddWithValue("@Account_Number", depositDetails.Account_Number); 

       j = cmd.ExecuteNonQuery(); 
       if (j == 1) 
       { 
        trans.Commit(); 


        //Create the SqlCommand object 
        SqlCommand cmd1 = new SqlCommand("Current_Account_Dposit", con); 
        //Specify that the SqlCommand is a stored procedure 
        cmd1.CommandType = System.Data.CommandType.StoredProcedure; 

        //Add the input parameters to the command object 
        cmd1.Parameters.AddWithValue("@Account_Number", current_Account_Deposit_Details.Account_Number); 
        cmd1.Parameters.AddWithValue("@Account_Holder_Name", current_Account_Deposit_Details.Account_Holder_Name); 
        cmd1.Parameters.AddWithValue("@Amount", current_Account_Deposit_Details.Amount); 


        cmd1.Parameters.AddWithValue("@Sort_Code", current_Account_Deposit_Details.Sort_Code); 
        cmd1.Parameters.AddWithValue("@Transcation_Type", current_Account_Deposit_Details.Transcation_Type); 
        cmd1.Parameters.AddWithValue("@Date", current_Account_Deposit_Details.Date); 



        //Open the connection and execute the query 
        con.Open(); 
        cmd1.ExecuteNonQuery(); 
        con.Close(); 
        return true; 

        //Retrieve the value of the output parameter 
       } 
       else 
       { 
        trans.Rollback(); 
        return false; 
       } 



      } 
     } 

Vorschläge oder Feedback oder Hilfe wäre sehr geschätzt ...

+0

Verwenden Dapper (Mini ORM), wenn Sie mit Objekten möchten können –

+0

leid spielen, was du meinst ???/ –

+0

wirklich meine ich, können Sie Dapper Bibliothek benutzen, die dient als Mini-Objekt Relational Mapper. Sie können Ihre Datenbanktabelle als Klasse erstellen und diesen Typ zur Aktualisierung übergeben und den gewünschten Vorgang auswählen. Sie können durch http://dapper-tutorial.net/dapper gehen Tutorial –

Antwort

0

Ja, es ist möglich, Transaktionen zu verwenden und leicht, sie zu Entity Framework zu konvertieren. 1) Beginnen Sie mit dem Hinzufügen der DB-Objekte in Entity-Framework (ADO.NET-Entity-Datenmodell) 2) Starten Sie mit LINQ/LAMBDA, wie Sie möchten. 3) Verwenden Sie Database.BeginTransaction() und context.commit/rollback entsprechend.

Der folgende Code ist nur, um Ihnen eine Idee zu geben. nicht kompilieren

-Code

public bool CurrentAccountDepositDetails(Current_Account_Deposit_Details current_Account_Deposit_Details) 
{ 
    int j = Convert.ToInt32(current_Account_Deposit_Details.Account_Number); 

    using (MyDbContext ctx = new MyDbContext(ConnectionString)) 
    { 

     var foundAccount = ctx.Current_Account_Details.firstOrDefault(x=> x.Account_Number == j); 

     using (var dbContextTransaction = ctx.Database.BeginTransaction()) 
     { 
      var acctDetails= ctx.Current_Account_Details.firstOrDefault(x=> x.Account_number =depositDetails.Account_Number); 
      acctDetails.Account_Balance == acctDetails.Account_Balance +current_Account_Deposit_Details.Amount ; 

      if(acctDetails!=null) 
      { 
       ctx.SaveChanges(); 
       dbContextTransaction.Commit(); 
       //do your deposits here similar to accdetails 
       //ctx.Current_Account_Dposit()storedprocedure if you included while creating db file 
      }    
      else 
      { 
       dbContextTransaction.Rollback(); 
       return false; 
      } 
     } 

    } 
} 
+0

Es gibt eine Operation mit + Zeichencode, wie Sie wissen, um Kontostand zu aktualisieren? –

+0

siehe die Änderungen, um eine Idee zu bekommen. –

+0

Vielen Dank für Ihre wertvolle Zeit.Lassen Sie mich kompilieren und es ausführen, was das Ergebnis, das ich davon bekomme –