2017-01-03 5 views
8

System.Data.Entity.Design.PluralizationServices을 사용하는 T4 템플릿을 사용하여 일부 모델 생성의 테이블 이름을 처리합니다.상태를 Statu로 변경하는

CompanyStatus과 같이 Status이라는 테이블을 실행할 때 Singularize 메서드는 CompanyStatu을 반환합니다. 아래에 몇 가지 샘플 코드가 있습니다.

CompanyStatus를 올바르게 표시하려면 어떻게해야합니까?

void Main() 
{ 
    // Sanity checks 
    Console.WriteLine(Singularize("Cats")); 
    Console.WriteLine(Singularize("Cat")); 
    Console.WriteLine(Singularize("Status")); 
    // The real issue 
    Console.WriteLine(Singularize("CompanyStatus")); 
} 

static string Singularize(string word) 
{ 
    var singularword = System.Data.Entity.Design.PluralizationServices.PluralizationService.CreateService(System.Globalization.CultureInfo.GetCultureInfo("en-us")).Singularize(word); 
    return singularword; 
} 

이 반환

고양이
고양이
상태
CompanyStatu

나는 또한 시도 :

static string Singularize(string word) 
{ 
    var pluralizationService = System.Data.Entity.Design.PluralizationServices.PluralizationService.CreateService(System.Globalization.CultureInfo.GetCultureInfo("en-us")); 
    ((ICustomPluralizationMapping)pluralizationService).AddWord("companystatus", "companystatuses"); 
    var singularword = pluralizationService.Singularize(word);  
    return singularword; 
} 
+0

아마도 ((ICustomPluralizationMapping) pluralizationService) .AddWord ("companystatus", "companystatus"), ' – Kevorkian

+0

아직 @Kevorkian이 없습니다. –

답변

0

Humanizer이 옵션을 사용하면 바로 사용 가능합니까?

// Note that you have to set the "inputIsKnownToBePlural" flag to false, 
// or it will behave the same as PluralizationServices. 

Console.WriteLine("Statuses".Singularize(inputIsKnownToBePlural: false)); 
Console.WriteLine("Status".Singularize(inputIsKnownToBePlural: false)); 
Console.WriteLine("CompanyStatus".Singularize(inputIsKnownToBePlural: false)); 
Console.WriteLine("CompanyStatuses".Singularize(inputIsKnownToBePlural: false)); 

Documentation.