Entity Framework database-first и атрибут столбца не работает - PullRequest
0 голосов
/ 11 марта 2019

У меня есть база данных с ограничением, что все первичные ключи заканчиваются на _Id. Для моих классов EF я хотел опустить подчеркивание, поэтому я изменил шаблон T4 для генерации свойств на это (CodeStringGenerator.Property):

public string Property(EdmProperty edmProperty)
{
    var dbName = _code.Escape(edmProperty);
    var propResult = "";

    if(dbName.Contains("_"))
    {
        propResult = "[Column(\"" + dbName + "\")]\r\n\t";
        dbName = dbName.Replace("_", "");
    }

    return propResult + string.Format(
        CultureInfo.InvariantCulture,
        "{0} {1} {2} {{ {3}get; {4}set; }}",
        Accessibility.ForProperty(edmProperty),
        _typeMapper.GetTypeName(edmProperty.TypeUsage),
        dbName,
        _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
        _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
}

Это удаляет все "_" из имени свойства и записывает атрибут столбца в свойство. Но похоже, что это нарушает EF. С атрибутом column EF выдает исключение каждый раз, когда я пытаюсь сделать что-то вроде выбора сущности.

Исключение составляет:

Тип сущности ENTITY не является частью модели для текущего контекста.

Если я напишу оригинальное имя, как в базе данных, EF будет работать с сущностью, но не будет, если я добавлю атрибут столбца.

Есть ли способ переименовать все свойства или заставить работать атрибут столбца? Использование EF6.2

1 Ответ

0 голосов
/ 15 марта 2019

После нескольких дней исследований я не нашел другого пути, кроме как использовать AutoMapper для преобразования столбца в имена Entity.Property в OneWay, поэтому я решил переключить свой ORM на более простой, который работает с Primary с База данных Первый подход.

Вывод: невозможно

...