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
DB 필드는 모든 추가 공간을 반환합니다. 그래서 나는 그들을 다듬어야 만한다. 내 필드에서 Trim()을 수행하는 더 좋은 방법이 있습니까? –
슬프게도 나는 거기 있다고 생각하지 않습니다. 다른 해결책은 데이터베이스의 데이터에서 이러한 여분의 공간을 실제로 제거하여 나중에 다듬을 필요가 없도록하는 것입니다. 데이터베이스 관리자가있는 경우 데이터베이스 관리자가 전달하는 것이 쉽지 않을 수 있습니다 (유사한 문제가 있었으며 데이터베이스 관리자가 실제로 데이터를 조작하도록 유도하는 데 많은 노력이 필요했습니다). – Joakim