title: What is in ViewModel in MVVM
body: <p>I have spent long time searching about MVVM in WPF. I understand why to use it. This is clear for me.
  What I don't is, what is in ViewModel itself. I know it is the connection between the View and the Model. Also, I know (at least, what most of programmers suggest) that implement the <code>INotifyPropertyChanged</code>. Adding to this, the Commands.</p>
  
  <p>Let say, that I have this Model (Code First with EF 6):</p>
  
  <pre><code>public class City
  {
      [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
      public int CityId { get; set; }
  
      [DataType("VarChar"), MaxLength(25), Required]
      public string CityName { get; set; }
  }
  </code></pre>
  
  <p>My Questions are:</p>
  
  <p>1- In many examples I've seen, they recreate the same fields again in VM. What is the purpose, is it enough to have the whole object (City in my example). How about if there are many fields!.</p>
  
  <p>2- To be able, to use it in my View (CRUD), how is the CityVm() will be in my example?.</p>
  
  <p>I appreciate any help.</p>