我創建了一個使用EF的控制檯應用程序。它工作得很好,但我知道它可以重構。這裏是我的代碼:如何重構C#EF代碼?
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");
這裏是我現在修改後:
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) where 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()
});
}
}
我如何重構這個代碼?
。如果您正在爲初學者檢索大量實體,則Trim()可能會是一個相當大的表現。所以除非需要,否則刪除它。 – Joakim
數據庫字段返回所有額外的空間。這就是爲什麼我必須修剪它們。有沒有更好的方法在我的領域做Trim()? –
不幸的是,我不認爲有這樣的解決方案,只有其他解決方案是從數據庫中的數據中實際刪除這些額外的空間,以便以後不必修剪它。如果有數據庫管理員通過這種方式可能並不容易(我遇到過類似的問題,並且花費了相當大的努力來說服我的數據庫管理員實際操縱數據)。 – Joakim