title: Error: No mapping exists from object type
body: <p>Here is the code for my simple parsing application. I am getting an error that states 'No mapping exists from type System.Text.RegularExpressions.Match to a known managed provider native type'. This started to occur when I switched from using Split('_') to RegEx.Match for defining RNumberE, RNumberD, etc. Any guidance is appreciated.</p>
  
  <pre><code>using System; 
  using System.Data; 
  using System.Data.SQLite; 
  using System.IO;
  using System.Text.RegularExpressions;
  using System.Threading;
  using System.Collections.Generic;
  using System.Linq;
  using System.Data.SqlClient;
  
  
  namespace CMMDataParser 
  { 
      internal class Program 
      {
  
  
          public static List&lt;string&gt; GetImportedFileList()
          {
              List&lt;string&gt; ImportedFiles = new List&lt;string&gt;();
              using (SqlConnection connect = new SqlConnection(@"Server=SERVER;Database=RX_CMMData;Integrated Security=YES"))
              {
                  connect.Open();
                  using (SqlCommand fmd = connect.CreateCommand())
                  {
  
                      fmd.CommandText = @"SELECT FileName FROM CMMData;";
                      fmd.CommandType = CommandType.Text;
                      SqlDataReader r = fmd.ExecuteReader();
                      while (r.Read())
                      {
                          ImportedFiles.Add(Convert.ToString(r["FileName"]));
  
                      }
                  }
              }
              return ImportedFiles;
          } 
  
  
  
  
          private static void Main(string[] args) 
          {
  
  
              Console.Title = "John Deere CMM Data Parser";
              Console.WriteLine("Preparing CMM Data Parser... done");
              Console.WriteLine("Scanning for new CMM data...");
              Console.ForegroundColor = ConsoleColor.Gray;
  
              using (SqlConnection con = new SqlConnection(@"Server=FRXSQLDEV;Database=RX_CMMData;Integrated Security=YES"))
              {
  
  
                  con.Open();
  
                  using (SqlCommand insertCommand = con.CreateCommand())
                  {
                      Console.WriteLine("Connecting to SQL server...");
                      SqlCommand cmdd = con.CreateCommand();
                      string[] files = Directory.GetFiles(@"C:\Documents and Settings\js91162\Desktop\CMM WENZEL\", "*_*_*.txt", SearchOption.AllDirectories);
                      List&lt;string&gt; ImportedFiles = GetImportedFileList();
                      insertCommand.Parameters.Add(new SqlParameter("@FeatType", DbType.String));
                      insertCommand.Parameters.Add(new SqlParameter("@FeatName", DbType.String));
                      insertCommand.Parameters.Add(new SqlParameter("@Axis", DbType.String));
                      insertCommand.Parameters.Add(new SqlParameter("@Actual", DbType.Decimal));
                      insertCommand.Parameters.Add(new SqlParameter("@Nominal", DbType.Decimal));
                      insertCommand.Parameters.Add(new SqlParameter("@Dev", DbType.Decimal));
                      insertCommand.Parameters.Add(new SqlParameter("@TolMin", DbType.Decimal));
                      insertCommand.Parameters.Add(new SqlParameter("@TolPlus", DbType.Decimal));
                      insertCommand.Parameters.Add(new SqlParameter("@OutOfTol", DbType.Decimal));
  
                      foreach (string file in files.Except(ImportedFiles))
  
                      {
                          var FileNameExt1 = Path.GetFileName(file);
                          cmdd.Parameters.Clear();
                          cmdd.Parameters.Add(new SqlParameter("@FileExt", FileNameExt1));
                          cmdd.CommandText =
                              @" 
                      IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'RX_CMMData' AND TABLE_NAME = 'CMMData')) BEGIN SELECT COUNT(*) FROM CMMData WHERE FileName = @FileExt; END";
  
  
  
                          int count = Convert.ToInt32(cmdd.ExecuteScalar());
                          con.Close();
                          con.Open();
  
                          if (count == 0)
                          {
  
  
  
  
                                  Console.WriteLine("Preparing to parse CMM data for SQL import...");
                                  if (file.Count(c =&gt; c == '_') &gt; 5) continue;
  
                                  insertCommand.CommandText =
                                      @"
                      INSERT INTO CMMData  (FeatType, FeatName, Axis, Actual, Nominal, Dev, TolMin, TolPlus, OutOfTol, PartNumber, CMMNumber, Date, FileName) 
                      VALUES     (@FeatType, @FeatName, @Axis, @Actual, @Nominal, @Dev, @TolMin, @TolPlus, @OutOfTol, @PartNumber, @CMMNumber, @Date, @FileName);";
  
  
  
  
                                  string FileNameExt = Path.GetFullPath(file);
  
  
                                  string RNumber = Path.GetFileNameWithoutExtension(file);
                                  int index2 = RNumber.IndexOf("~");
                                  Match RNumberE = Regex.Match(RNumber, @"^(R|L)\d{6}(COMP|CRIT|TEST|SU[1-9])(?=_)", RegexOptions.IgnoreCase);
  
                                  Match RNumberD = Regex.Match(RNumber, @"(?&lt;=_)\d{3}[A-Z]\d{4}|\d{3}[A-Z]\d\w\w\d(?=_)", RegexOptions.IgnoreCase);
  
                                  Match RNumberDate = Regex.Match(RNumber, @"(?&lt;=_)\d{8}(?=_)", RegexOptions.IgnoreCase);
  
                                  if (RNumberD.Value == @"") continue;
                                  if (RNumberE.Value == @"") continue;
                                  if (RNumberDate.Value == @"") continue;
                                  if (index2 != -1) continue;
  
  
                              /*  string RNumberE = RNumber.Split('_')[0];
  
                                string RNumberD = RNumber.Split('_')[1];
                                string RNumberDate = RNumber.Split('_')[2]; */
  
                                  DateTime dateTime = DateTime.ParseExact(RNumberDate.Value, "yyyyMMdd", Thread.CurrentThread.CurrentCulture);
                                  string cmmDate = dateTime.ToString("dd-MMM-yyyy");
  
  
                                  string[] lines = File.ReadAllLines(file);
                                  bool parse = false;
  
                                  foreach (string tmpLine in lines)
                                  {
  
  
                                      string line = tmpLine.Trim();
                                      if (!parse &amp;&amp; line.StartsWith("Feat. Type,"))
                                      {
                                          parse = true;
                                          continue;
                                      }
                                      if (!parse || string.IsNullOrEmpty(line))
                                      {
                                          continue;
                                      }
  
                                      Console.WriteLine(tmpLine);
                                      foreach (SqlParameter parameter in insertCommand.Parameters)
                                      {
                                          parameter.Value = null;
                                      }
  
                                      string[] values = line.Split(new[] { ',' });
  
                                      for (int i = 0; i &lt; values.Length - 1; i++)
                                      {
                                          SqlParameter param = insertCommand.Parameters[i];
                                          if (param.DbType == DbType.Decimal)
                                          {
                                              decimal value;
                                              param.Value = decimal.TryParse(values[i], out value) ? value : 0;
                                          }
                                          else
                                          {
                                              param.Value = values[i];
                                          }
                                      }
  
  
                                      insertCommand.Parameters.Add(new SqlParameter("@PartNumber", RNumberE));
                                      insertCommand.Parameters.Add(new SqlParameter("@CMMNumber", RNumberD));
                                      insertCommand.Parameters.Add(new SqlParameter("@Date", cmmDate));
                                      insertCommand.Parameters.Add(new SqlParameter("@FileName", FileNameExt));
                                      insertCommand.ExecuteNonQuery();
  
                                        insertCommand.Parameters.RemoveAt("@PartNumber");
                                       insertCommand.Parameters.RemoveAt("@CMMNumber");
                                       insertCommand.Parameters.RemoveAt("@Date");
                                      insertCommand.Parameters.RemoveAt("@FileName");
  
                                  }
  
  
                              }
  
                                  }  
                          Console.WriteLine("CMM data successfully imported to SQL database...");
  
                      }
                      con.Close();
  
              }
          } 
      } 
  } 
  </code></pre>