2017-01-03 2 views
8

У нас есть шаблон T4 с использованием System.Data.Entity.Design.PluralizationServices для обработки имен таблиц для некоторых поколений моделей.ПлюрализацияУслуги, меняющие статус на Statu

Когда мы запускаем таблицу с Status на имя, например CompanyStatus, метод 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; 
} 

Это возвращает:

Cat
Cat
Статус
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.