Добавить атрибут в проект, используя codeFirst и DbFirst одновременно - PullRequest
0 голосов
/ 18 октября 2019

У меня есть проект, управляемый с помощью CodeFirst и DbFirst (edmx), и мне нужно добавить новый атрибут в таблицу. При добавлении с миграцией выявляются проблемы с сущностями, а при добавлении с помощью DbFirst миграция не может быть выполнена из-за наличия поля. Что я могу сделать?

Ошибка ниже после прохождения миграции и обновления файла EDMX. «TopActive» - это атрибут, который я добавил в модель. И ошибка с CodeFirst в том, что поле уже существует в Db.

        Message "The specified type member 'TopActive' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported."    string

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Я решил проблему с помощью: 1- CodeFirst Migrations 2- Отредактируйте edmx вручную, добавив атрибут в XML и не обновляя edmx.

0 голосов
/ 18 октября 2019

мой подход был бы немного утомительным.

Сначала будет создано новое свойство с желаемым атрибутом

//example
public class EntityA
{
    [Key]
    public int Id {get; set;}
    public string Property {get; set;} //Property you want to add [attribute] but not working

    [AttributeYouWantToAdd]
    public string PropertyWithAttribute {get; set;}
}

Во-вторых, создайте миграцию. В своей миграции добавьте ее после того, как AddColumn

Sql("Update Table Set PropertyWithAttribute = Property");

В-третьих, удалите предыдущее свойство, снова добавьте миграцию.

В-четвертых, добавьте свойство снова с правильным именем и атрибутом, затем добавьте миграциюснова.

Затем то же самое, после AddColumn

Sql("Update Table Set Property = PropertyWithAttribute")

, затем сбросьте PropertyWithAttribute, добавьте миграцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...