title: C# database interaction
body: <p><em>What would be the most generic way to handle user-database interaction in <code>C#</code></em></p>
  
  <p>I expect being able to easilly swap the database drivers (data providers).</p>
  
  <p>I also think <em>(not sure if it's possible)</em> that it would be great if I could switch the data source from something <em>DB-like</em> (for example, plain <code>MySQL</code> database) to something absolutely another - like data serialized into <code>xml</code> or arbitrary binary file. <em>I suspect the last case would require writing some Query-File interaction wrapper or something like that.</em></p>
  
  <hr>
  
  <p>So - could someone <strong>share a way</strong> to achieve the described behavior?</p>
  
  <p><em><strong>I can definitely use <code>LINQ</code> for my queries and it does introduce some abstraction - but is it enough to make the data sources interchangeable?</em></strong></p>
  
  <p><em>If yes, then what should I actually do to bring this to life and how would my development pipeline look?</em></p>
  
  <p>Thanks.</p>