/* ------------------------ My Meta Content Here SEO ------------------------ */

Pages

Main Menu

Tuesday, August 20, 2013

How to use transaction in LINQ using C#

LINQ generates DataContext class which provides classes and methods which is used in OR-Mapping. You can also use your stored procedures and views with LINQ. You may require to use transaction with your SPs during Insert, Delete or Update operations.

System.Data.Common.DbTransaction class provides the Transaction object. I have used Northwind database in this example. Lets start with new project, you can select new project from Start -> All Programs ->  Microsoft Visual Studio 2008 Beta 2  and click on Microsoft Visual Studio 2008 Beta 2. Create new Asp.net website. Right click on website from solution explorer and select LINQ to SQL classes from Add New Item as shown below.
Fig – (1)  LINQ to SQL classes 
           This will generate dbml file in App_Code folder. Select the tables, views, stored procedures and function from server explorer and drag it on dbml file. DataContext class generates methods for each SPs, functions and views. 
           I have used Category and Product tables in this example. I have created two SPs InsertCategory and InsertProduct for inserting records in appropriate tables. You can see your SPs when you create the object of DataContext class.
Fig – (2) DataContext class shows the methods generated for SPs 
          I will first insert the category and then insert product for newly created category. If you have used some parameters as OUT parameters in your SP, you need to pass these parameters as Ref in calling method. In my SPs I have used CategoryID and ProductID as OUT parameters. 
          Now, lets move towards the transaction. I want that either category and product both will be added in database or none of them will be inserted. Below is the code for that,
System.Data.Common.DbTransaction trans = null;
DataClassesDataContext objDataClass = new DataClassesDataContext
                 
(ConfigurationManager.ConnectionStrings
                                       [Constants.ConnectionString].ConnectionString);
try{
                // Nullable data type as the methods generated for SP will use Nullable
                // type
                int? intCategoryID =0;
                int? intProductID =0;
                // Open the connection
                objDataClass.Connection.Open();
                // Begin the transaction
                trans = objDataClass.Connection.BeginTransaction();
               
                // Assign transaction to context class
                // All the database operation perform by this object will now use
                //transaction
 
                objDataClass.Transaction = trans;
                // Insert Category
                // I have to use Ref keyword CategoryID of newly added category will
                // be assign to this variable

                objDataClass.InsertCategory
                                          (
                                            ref intCategoryID, 
                                            txtName.Text.Trim().Replace(“‘”“””), 
                                            txtDescription.Text.Trim().Replace(“‘”“””),
                                            new byte[0]
                                          );
                               
                // Insert Product
                // I have to use Ref keyword as ProductID of newly generated product will
                // be assign to this variable

                objDataClass.InsertProduct
                                          (
                                            ref intProductID,
                                            txtProductName.Text.Trim().Replace(“‘”,“””),
                                            null,
                                            intCategoryID,
                                            txtQuantityPerUnit.Text.Trim().Replace(“‘”“””),
                                            Convert.ToDecimal(
                                                      txtUnitPrice.Text.Trim().Replace(“‘”“””)
                                                                                  ),
                                             null,
                                             null,
                                             null,
                                             0);
               
                // Commit transaction
                trans.Commit();
               
            }
            catch (Exception ex)
            {                
                    // Rollback transaction
                    if (trans != null)
                                 trans.Rollback();
            }
            finally            {
                      // Close the connection
                      if (objDataClass.Connection.State == ConnectionState.Open)
                                 objDataClass.Connection.Close();
            }
     Fig – (3) Code for Transaction in LINQ using  C#
Happy Programming !!
Read More »

Friday, August 2, 2013

Using Java Script Bytes Conversion


Function ConvertBytes(ByRef anBytes)
    Dim lnSize          ' File Size To be returned
    Dim lsType          ' Type of measurement (Bytes, KB, MB, GB, TB)
   
    Const lnBYTE = 1
    Const lnKILO = 1024                     ' 2^10
    Const lnMEGA = 1048576                  ' 2^20
    Const lnGIGA = 1073741824               ' 2^30
    Const lnTERA = 1099511627776            ' 2^40
 
 
 
    '    Const lnPETA = 1.12589990684262E+15        ' 2^50
    '    Const lnEXA = 1.15292150460685E+18        ' 2^60
    '    Const lnZETTA = 1.18059162071741E+21    ' 2^70
    '    Const lnYOTTA = 1.20892581961463E+24    ' 2^80
   
    If anBytes = "" Or Not IsNumeric(anBytes) Then Exit Function
   
    If anBytes < 0 Then Exit Function  

'    If anBytes < lnKILO Then
'        ' ByteConversion
'        lnSize = anBytes
'        lsType = "bytes"
'    Else      
        If anBytes < lnMEGA Then
            ' KiloByte Conversion
            lnSize = (anBytes / lnKILO)
            lsType = "kb"
        ElseIf anBytes < lnGIGA Then
            ' MegaByte Conversion
            lnSize = (anBytes / lnMEGA)
            lsType = "mb"
        ElseIf anBytes < lnTERA Then
            ' GigaByte Conversion
            lnSize = (anBytes / lnGIGA)
            lsType = "gb"
        Else
            ' TeraByte Conversion
            lnSize = (anBytes / lnTERA)
            lsType = "tb"
        End If
'    End If
    ' Remove fraction
    'lnSize = CLng(lnSize)
    lnSize = FormatNumber(lnSize, 2, True, False, True)
   
    ' Return the results
    ConvertBytes = lnSize & " " & lsType
End Function


Function ConvertBytes1(ByRef anBytes)
if anBytes <= 1024 then
response.write anBytes & " KB"
else
anBytes = anBytes/1024
response.write anBytes & " MB"
end if
End Function


 public string ConvertBytes(int anBytes)
    {
        if (anBytes == 0)
        {
           
        }

        return "";
    }


 //File Size To be returned
    string lnSize;
    // Type of measurement (Bytes, KB, MB, GB, TB)
    string lsType;
    public const int lnBYTE = 1;
    //2^10
    public const int lnKILO = 1024;
    //2^20
    public const int lnMEGA = 1048576;
    //2^30
    public const int lnGIGA = 1073741824;
    //2^40
    public const long lnTERA = 1099511627776;
    //2^50
    public const double lnPETA = 1.12589990684262E+15;
    //2^60
    public const double lnEXA = 1.15292150460685E+18;
    //2^70
    public const double lnZETTA = 1.18059162071741E+21;
    //2^80
    public const double lnYOTTA = 1.20892581961463E+24;

Read More »

My Blog List