Ошибка выполнения пакета миграции Entity Framework Core 6

#c# #asp.net-core #.net-core #entity-framework-core #entity-framework-migrations

#c# #asp.сетевое ядро #.net-ядро #сущность-структура-ядро #сущность-структура-миграции

Вопрос:

Я пытаюсь использовать новый пакет миграции ядра EF для обновления схемы базы данных.

Я создал пакет, используя:

 dotnet ef migrations bundle --self-contained --runtime linux-x64  

Но когда я попытался обновить базу данных с помощью:

 ./efbundle --connectionString ${MY_CONNETION_STRING}  

Или даже получить помощь от:

 ./efbundle --help  

Я получаю следующую ошибку:

./efbundle: ошибка перемещения: ./efbundle: символ nanosleep версии GLIBC_2.2.5 не определен в файле libpthread.so.0 со ссылкой на время ссылки

Однако, если я перемещу efbundle файл в publish каталог, все, кажется, работает.

Итак, мой вопрос: всегда ли я должен помещать efbundle файл в publish папку? Или я могу поместить его куда угодно и применить миграции к базе данных, поскольку это автономный исполняемый файл?

Если нет, то какой смысл использовать пакет миграций?

Комментарии:

1. Я не уверен, но подозреваю, что для этого требуется ваша библиотека DLL приложения для контекста. --self-contained устраняет требование к развертыванию платформы обычно, если вы хотите предоставить один файл при сборке, вам также необходимо указать другой параметр, например : /p:PublishSingleFile=true поэтому вам нужно либо скопировать его в папку публикации, либо скопировать необходимые библиотеки DLL вместе.

2. Я обнаружил, что проблема возникает только при установке SDK с помощью snap. Установка с помощью APT работает, как и ожидалось. Я думаю, что проблема в оснастке.

Ответ №1:

ОК. Я установил SDK DotNet на свою машину Ubuntu с помощью snap. Но после того, как я переустановил его с помощью apt, теперь он работает из любого места. Похоже, что проблема в установке snap (я также сталкивался с другими проблемами EF раньше). Но все же я не уверен, возможно ли/как устранить проблему при установке snap.