Преобразование имен базы данных в сущность

В настоящее время я использую EF 5.0.0 с EF Power Tools 3. Я пытаюсь выполнить обратный инжиниринг из существующей базы данных с помощью сначала кода обратного инжиниринга (Power Tools 3). Пример этого можно найти по ссылке MSDN.

Единственная проблема в этом - это имя объектов моей базы данных. Моя база данных использует маленькие слова и подчеркивание как пробел, например: item_cart. Однако я не хочу, чтобы такой стандарт именования передавался моему приложению C#.

Затем я попытался настроить шаблон для преобразования каждого имени таблицы / поля в соответствии со стандартами именования приложений. Это текущий инструмент конвертации, который я делал до сих пор.

    public static string SqlNameToEntityName(string name)
    {
        StringBuilder entityName = new StringBuilder();

        if(string.IsNullOrEmpty(name)) return name;
        else if (!name.Contains('_'))
        {
            return name[0].ToString().ToUpper() + name.Substring(1);
        }

        string rippedName = name;

        while(rippedName[0] == '_')
        {
            rippedName = rippedName.Substring(1);
        }

        do{
            entityName.Append( CustomConvention.UpperFirstChar( rippedName.Substring(0, rippedName.IndexOf('_')) ) );
            rippedName = rippedName.Substring(rippedName.IndexOf('_')+1);
        }while(rippedName.Contains('_'));

        entityName.Append( CustomConvention.UpperFirstChar(rippedName) );

        return entityName.ToString();
    }

    public static string UpperFirstChar(string name)
    {
        if(string.IsNullOrEmpty(name)) return "";

        return name[0].ToString().ToUpper() + name.Substring(1, name.Length-1).ToLower();
    }

Затем в Entity.tt я изменил шаблон, используя этот статический метод. columnName = CustomConvention.SqlNameToEntityName(columnName);, Используя этот подход, я могу преобразовать имена таблиц из item_cart в ItemCart достаточно хорошо (пока не проверено).

Наконец, вот мои вопросы:

  • В настоящее время я не могу изменить имя файла.cs в соответствии с соглашением об именах. Так что все еще остается как item_cart.cs
  • Мой подход создаст проблемы в будущем?
  • Есть ли более лучший (стандартный / более чистый) способ сделать это?
  • Помимо этого реверс-инжиниринга, какой самый лучший (самый быстрый и самый чистый) способ сопоставить таблицы (возможно, представления и процедуры) с сущностями?

Возможный связанный вопрос: Разрешение конфликта соглашения об именах между сущностями в EF4 и стандартами нашей базы данных?

0 ответов

Другие вопросы по тегам