title: Can LINQ to SQL fill non-ColumnAttribute-marked properties when using DataContext.ExecuteQuery?
body: <p>Given this table:</p>
  
  <pre><code>CREATE TABLE [Comments]
  (
    [Id] [int] IDENTITY(1, 1) NOT NULL, 
    [Text] [nvarchar](600) NOT NULL
  )
  </code></pre>
  
  <p>With this model class:</p>
  
  <pre><code>[Table(Name="Comments")]
  public class Comment
  {
      [Column(AutoSync = AutoSync.OnInsert, DbType = "Int NOT NULL IDENTITY", IsPrimaryKey = true, IsDbGenerated = true)]
      public int Id { get; set; }
  
      [Column(DbType = "NVarChar(600) NOT NULL", CanBeNull = false)]
      public string Text { get; set; }
  
      public string ArbitraryText { get; set; }
  }
  </code></pre>
  
  <p>Is it possible for a DataContext to fill the <code>ArbitraryText</code> property when using the <code>ExecuteQuery</code> method:</p>
  
  <pre><code>var comments = db.ExecuteQuery&lt;Comment&gt;("select Id, [Text], 'hello' [ArbitraryText] from Comments");
  </code></pre>
  
  <p>It seems that the entity mapping algorithm ignores any property not marked with <code>ColumnAttribute</code>, but is there another way of doing this?</p>
  
  <p>I'd prefer not having to do the mapping myself, but this looks like my only option.</p>
  
  <p><hr>
  Edit: What's annoying is that the DataContext.ExecuteQuery function will fill a <a href="http://en.wikipedia.org/wiki/Plain_Old_CLR_Object" rel="nofollow noreferrer">POCO</a> object from a query:</p>
  
  <pre><code>public class PlainOldCSharpObject
  {
      public int Id { get; set; }
      public string Text { get; set; }
      public string ArbitraryText { get; set; }
  }
  ...
  // DataContext correctly fills these objects
  var pocos = db.ExecuteQuery&lt;PlainOldCSharpObject&gt;("select Id, [Text]...
  </code></pre>
  
  <p>So my current solution is to have an inner class on my LINQ-mapped object that holds the extra data my aggregate query returns.  This is sub-optimal, as some properties are duplicated (for example, Id and Text).</p>