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
Post a Comment