Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

SQL insertion

By: tomlev on Jan 23rd, 2012  |  syntax: C#  |  size: 3.38 KB  |  views: 131  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1.         private TimeSpan ImportMembersSQL(IList<DocMember> members)
  2.         {
  3.             using (var db = new DocEntities())
  4.             {
  5.                 db.Database.CreateIfNotExists();
  6.             }
  7.  
  8.             using (var connection = Database.DefaultConnectionFactory.CreateConnection("DocEntities"))
  9.             {
  10.                 connection.Open();
  11.  
  12.                 using (var transaction = connection.BeginTransaction())
  13.                 using (var insertMemberCommand = connection.CreateCommand())
  14.                 using (var insertItemCommand = connection.CreateCommand())
  15.                 using (var getIdentityCommand = connection.CreateCommand())
  16.                 {
  17.                     insertMemberCommand.CommandText =
  18.                         "INSERT INTO DocMembers(Name, MemberType, AssemblyName) VALUES(@name, @memberType, @assemblyName)";
  19.                     insertMemberCommand.AddParameter("@name", DbType.String);
  20.                     insertMemberCommand.AddParameter("@memberType", DbType.String);
  21.                     insertMemberCommand.AddParameter("@assemblyName", DbType.String);
  22.                     insertMemberCommand.Transaction = transaction;
  23.                     insertMemberCommand.Prepare();
  24.  
  25.                     insertItemCommand.CommandText =
  26.                         "INSERT INTO DocItems(PartType, PartName, Text, Member_Id) VALUES (@partType, @partName, @text, @memberId)";
  27.                     insertItemCommand.AddParameter("@partType", DbType.String);
  28.                     insertItemCommand.AddParameter("@partName", DbType.String);
  29.                     insertItemCommand.AddParameter("@text", DbType.String);
  30.                     insertItemCommand.AddParameter("@memberId", DbType.Int32);
  31.                     insertItemCommand.Transaction = transaction;
  32.                     insertItemCommand.Prepare();
  33.  
  34.                     getIdentityCommand.CommandText = "SELECT @@IDENTITY AS Id";
  35.                     getIdentityCommand.Transaction = transaction;
  36.                     getIdentityCommand.Prepare();
  37.  
  38.                     var sw = Stopwatch.StartNew();
  39.  
  40.                     foreach (var m in members)
  41.                     {
  42.                         insertMemberCommand.Parameters["@name"].Value = m.Name;
  43.                         insertMemberCommand.Parameters["@memberType"].Value = m.MemberType;
  44.                         insertMemberCommand.Parameters["@assemblyName"].Value = m.AssemblyName;
  45.                         insertMemberCommand.ExecuteNonQuery();
  46.                         m.Id = Convert.ToInt32(getIdentityCommand.ExecuteScalar());
  47.  
  48.                         foreach (var item in m.Items)
  49.                         {
  50.                             insertItemCommand.Parameters["@partType"].Value = item.PartType;
  51.                             insertItemCommand.Parameters["@partName"].Value = item.PartName;
  52.                             insertItemCommand.Parameters["@text"].Value = item.Text;
  53.                             insertItemCommand.Parameters["@memberId"].Value = m.Id;
  54.                             insertItemCommand.ExecuteNonQuery();
  55.                             item.Id = Convert.ToInt32(getIdentityCommand.ExecuteScalar());
  56.                         }
  57.                         Progress++;
  58.                     }
  59.  
  60.                     transaction.Commit();
  61.  
  62.                     sw.Stop();
  63.                     return sw.Elapsed;
  64.                 }
  65.             }
  66.         }