entity framework - How to refactor C# EF code? -


i've created console application using ef. works well, know can refactored. here's code:

cabentities cacontext = new caentities(); usentities uscontext = new usentities();  var query = cacontext.ca_companies     .where(c =>         c.coverage_status.equals("active"))     .select(c => new datapullfields.datapull     {         ticker = c.ticker.trim(),         exchange = c.primary_exchange.trim(),         companyname = c.company_name.trim()     });  createcsvfile.writetocsvfile tf = new createcsvfile.writetocsvfile(query, "ca"); query = uscontext.us_companies     .where(c =>         c.coverage_status.equals("active_eq"))     .select(c => new datapullfields.datapull     {         ticker = c.ticker.trim(),         exchange = c.primary_exchange.trim(),         companyname = c.company_name.trim()     }); tf = createcsvfile.writetocsvfile(query, "us"); 

here's have after edits:

public class datapull {     public string companyname { get; set; }     public string exchange { get; set; }     public string ticker { get; set; } }  public interface icountryentity {     string companyname { get; set; }     string coverage_status { get; set; }     string exchange { get; set; }     string ticker { get; set; } }  public partial class caentity : console.interface.icountryentity { }  public partial class usentity : console.interface.icountryentity { }  public static class todatapull {     public static ienumerable<t> todatapull<t>(this ienumerable<t> entities) t : icountryentity     {         return entities.where(c =>             c.coverage_status.equals("active"))             .select(c => new console.datapullfields.datapull             {                 ticker = c.ticker.trim(),                 exchange = c.primary_exchange.trim(),                 companyname = c.company_name.trim()             });     } } 

how can refactor code?

i use interface , extension method.
more code, leads cleaner code in future.

e.g.

public partial class caentity : icountryentity { }  public partial class usentity : icountryentity { }  public interface icountryentity {     string ticker { get; set; }     string exchange { get; set; }     string companyname { get; set; }     string coverage_status { get; set; } }  //extension method must go in static class public static ienumerable<t> todatapull<t>(this ienumerable<t> entities) t: icountryentity {     return entities.where(c =>         c.coverage_status.equals("active_eq"))         .select(c => new datapullfields.datapull         {             ticker = c.ticker.trim(),             exchange = c.primary_exchange.trim(),             companyname = c.company_name.trim()         }); }  //your modified code cabentities cacontext = new caentities(); usentities uscontext = new usentities();  var query = cacontext.ca_companies.todatapull(); createcsvfile.writetocsvfile tf = new createcsvfile.writetocsvfile(query, "ca");  query = uscontext.us_companies.todatapull(); tf = createcsvfile.writetocsvfile(query, "us"); 

Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -