Re[8]: T4 шаблон для MS SQL и Sybase
От: IT Россия linq2db.com
Дата: 30.07.10 22:57
Оценка: +1
Здравствуйте, MozgC, Вы писали:

MC>В принципе есть готовые классы-конвертеры на C#, но это стоит ли это включать в библиотеку.. к тому же все равно может попасться слово где неправильно множественное число образуется..


Если есть гововые классы в виде исходников с открытой лицензией, то включить не проблема. На счёт 100% покрытия речи нет, 90-95 уже хорошо, остальное можно и ручками в шаблоне поменять.
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: T4 шаблон для MS SQL и Sybase
От: Andy77 Ниоткуда  
Дата: 30.07.10 23:53
Оценка:
Здравствуйте, IT, Вы писали:

IT>Если есть гововые классы в виде исходников с открытой лицензией, то включить не проблема. На счёт 100% покрытия речи нет, 90-95 уже хорошо, остальное можно и ручками в шаблоне поменять.


Ну так добавление "s" или "es", в зависимости от последней буквы, как раз покроет 95% всех случаев, тем более что в IT уже появилась традиция формировать слова неправильно (indexes уже прижившееся слово, хотя должно быть indices)
Re[10]: T4 шаблон для MS SQL и Sybase
От: IT Россия linq2db.com
Дата: 31.07.10 01:05
Оценка:
Здравствуйте, Andy77, Вы писали:

IT>>Если есть гововые классы в виде исходников с открытой лицензией, то включить не проблема. На счёт 100% покрытия речи нет, 90-95 уже хорошо, остальное можно и ручками в шаблоне поменять.

A>Ну так добавление "s" или "es", в зависимости от последней буквы, как раз покроет 95% всех случаев, тем более что в IT уже появилась традиция формировать слова неправильно (indexes уже прижившееся слово, хотя должно быть indices)

Не верю, что такой алгоритм ещё не написан
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: T4 шаблон для MS SQL и Sybase
От: MozgC США http://nightcoder.livejournal.com
Дата: 31.07.10 07:52
Оценка: 62 (1)
Здравствуйте, IT, Вы писали:

IT>Если есть гововые классы в виде исходников с открытой лицензией, то включить не проблема. На счёт 100% покрытия речи нет, 90-95 уже хорошо, остальное можно и ручками в шаблоне поменять.


Тогда вот несколько ссылок, первые 2 на C#, вторые 2 на java:

http://www.bennysutton.com/C-sharp/Plural-Singular-Words.aspx
http://mattgrande.wordpress.com/2009/10/28/pluralization-helper-for-c/
http://www.java2s.com/Tutorial/Java/0040__Data-Type/Transformswordstosingularpluralhumanizedhumanreadableunderscorecamelcaseorordinalform.htm
http://www.koders.com/java/fidD5B986B9C321951201AD831D1FF1FCF7DF6AB7F3.aspx?s=%22Anthony+Eden%22
Re[10]: T4 шаблон для MS SQL и Sybase
От: IT Россия linq2db.com
Дата: 31.07.10 16:32
Оценка:
Здравствуйте, MozgC, Вы писали:

MC>Тогда вот несколько ссылок, первые 2 на C#, вторые 2 на java:


MC>http://www.bennysutton.com/C-sharp/Plural-Singular-Words.aspx


Круть! По этой ссылке есть и ToPlural и ToSingular.
Если нам не помогут, то мы тоже никого не пощадим.
Re[11]: T4 шаблон для MS SQL и Sybase
От: andrex Украина  
Дата: 03.08.10 10:46
Оценка:
Здравствуйте, IT, Вы писали:

IT>Не верю, что такой алгоритм ещё не написан


Уже даже включен почти в фреймворк (4-й), смотреть
System.Data.Entity.Design.PluralizationServices.PluralizationService

он вроде как умный и даже расширяемый.
Вот только то, что он находится в System.Data.Entity.Design.dll сводит на нет все его преимущества и возможности использования
Я бы изменил мир — но Бог не даёт исходников...
Re[12]: T4 шаблон для MS SQL и Sybase
От: pr0ff  
Дата: 04.08.10 11:41
Оценка:
Здравствуйте, andrex, Вы писали:
A>Вот только то, что он находится в System.Data.Entity.Design.dll сводит на нет все его преимущества и возможности использования

Ну так в рантайме он не особо то и нужен
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[7]: T4 шаблон для MS SQL и Sybase
От: Димчанский Литва http://dimchansky.github.io/
Дата: 08.08.10 12:16
Оценка:
Здравствуйте, IT, Вы писали:

IT>Как быть с именами вроде Boss и City?


Как это сделано в LinqPad:

public static string GetPluralName(string name)
{
    int index = name.IndexOf("Of", StringComparison.Ordinal);
    if ((((index > 3) && (index < (name.Length - 4))) &&
         (char.IsLower(name, index - 1) && (name[index - 1] != 's'))) && char.IsUpper(name, index + 2))
    {
        return (name.Substring(0, index) + "s" + name.Substring(index));
    }
    string str = "";
    string str2 = name.ToLowerInvariant();
    if (str2.EndsWith("created", StringComparison.Ordinal) || name.EndsWith("updated", StringComparison.Ordinal))
    {
        if (name.Length < 10)
        {
            return name;
        }
        string str3 = str2.Substring(name.Length - 9, 2);
        string str4 = str2.Substring(name.Length - 10, 3);
        switch (str3)
        {
            case "co":
            case "re":
            case "un":
                return name;
        }
        switch (str4)
        {
            case "mis":
            case "pro":
                return name;
        }
        str = name.Substring(name.Length - 7);
        name = name.Substring(0, name.Length - 7);
    }
    str2 = name.ToLowerInvariant();
    if ((((!str2.EndsWith("information") && !str2.EndsWith("complete")) &&
          (!str2.EndsWith("_info") && !str2.EndsWith("_data"))) &&
         (!name.EndsWith("Info") && !name.EndsWith("Data"))) && !name.EndsWith("Staff"))
    {
        if (((str2.EndsWith("x") || str2.EndsWith("ch")) || str2.EndsWith("ss")) || str2.EndsWith("status"))
        {
            name = name + "es";
        }
        else if (!((!str2.EndsWith("y") || (str2.Length <= 1)) || IsVowel(str2[str2.Length - 2])))
        {
            name = name.Substring(0, name.Length - 1) + "ies";
        }
        else if (!str2.EndsWith("s"))
        {
            name = name + "s";
        }
    }
    return (name + str);
}

private static bool IsVowel(char c)
{
    return "aeiuo".Contains(char.ToLowerInvariant(c));
}
Re[4]: T4 шаблон для MS SQL и Sybase
От: IT Россия linq2db.com
Дата: 27.08.10 00:31
Оценка: 2 (1)
Здравствуйте, Andy77, Вы писали:

A>Еще один небольшой реквест — можно ли добавить переменную PluralizeTableNames?


Добавил.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: T4 шаблон для MS SQL и Sybase
От: IT Россия linq2db.com
Дата: 27.08.10 00:49
Оценка:
A>>Еще один небольшой реквест — можно ли добавить переменную PluralizeTableNames?
IT>Добавил.

Использовать включением файла:

<#@ include file="PluralSingular.ttinclude" #>
Если нам не помогут, то мы тоже никого не пощадим.
Re: T4 шаблон для MS SQL и Sybase
От: MozgC США http://nightcoder.livejournal.com
Дата: 05.09.10 20:17
Оценка: 99 (2)
Добавил T4 шаблон для MySQL.

Для генерации модели данных по MySql базе нужно создать и запустить такой T4 скрипт:

<#@ template language="C#v3.5" debug="True" #>
<#@ output extension=".generated.cs"   #>
<#@ assembly name = "MySql.Data" #>
<#@ include file="BLToolkit.ttinclude" #>
<#@ include file="MySql.ttinclude"    #>
<#
    ConnectionString     = "server=localhost;database=db;User Id=root;password=xxx";

    Namespace       = "DomainModel";
    DataContextName = "DataModel";
    // TimestampsAreNonUpdatable = false;

    GenerateModel();
#>

Сборка MySql.Data.dll должна быть установлена в GAC'е. Если она не установлена в GAC'е, то нужно задать путь к сборке в свойстве DataProviderAssembly, подробнее здесь: T4 templates for data model generating
Re[2]: MySql T4
От: zion.m  
Дата: 15.09.10 13:18
Оценка:
у меня для мускула потребовалось также указать ConnectionType
все заработало заработало вот так:

<#@ template language="C#v3.5" debug="True" #>
<#@ output extension=".generated.cs"   #>
<#@ include file="BLToolkit.ttinclude" #>
<#@ include file="MySql.ttinclude"    #>

<#
   ConnectionString     = "server=localhost;database=db;User Id=root;password=xxx";
   DataProviderAssembly = @"C:\vsproj\bltoolkit\Redist\MySql\MySql.Data.dll";
   ConnectionType="MySql.Data.MySqlClient.MySqlConnection";
   Namespace       = "DomainModel";
   DataContextName = "DataModel";
    // TimestampsAreNonUpdatable = false;

    GenerateModel();
#>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.