Nullables в Entity Framework Core на Xamarin iOS

Мы разрабатываем мобильное приложение с использованием Xamarin.Forms, которое поддерживается веб-приложением с использованием ASP.NET Core. Мы загружаем различные модели из баз данных как в веб-приложения, так и в мобильные приложения, а недавно мы перешли на использование EntityFramework Core (далее — EFCore) в веб-приложении.

В настоящее время мы рассматриваем возможность перехода мобильного приложения на использование EFCore, чтобы мы могли обмениваться большим количеством кода между приложениями, но столкнулись с проблемами с EFCore на iOS. Кажется, что он может компилироваться и запускаться, а также может загружать простые модели, но не может загружать типы, допускающие значение NULL, которые используются для указания необязательных отношений между моделями. Кажется, у этого человека есть EFCore работает в iOS и предоставляет проект для своего кода. . Я сам вытащил и запустил проект, чтобы проверить его работу, что он и сделал, но после добавления обнуляемого отношения к его простой модели впоследствии не удалось загрузить и создать элемент с этой ошибкой:

System.ExecutionEngineException: Попытка метода JIT-компиляции '(вызов среды выполнения оболочки) :runtime_invoke_void__this___int_byte_byte_byte_byte_byte_object_object_object_object_object_object_object_object_object_object_Nullable1 (object,intptr,intptr,intptr)' при работе в режиме "только aot". См. https://developer.xamarin.com/guides/ios/advanced_topics/limitations/ для получения дополнительной информации.

Эта ошибка не возникает при работе в симуляторе, только на устройстве.

Мой вопрос заключается в том, удалось ли кому-нибудь заставить Nullables работать с EFCore на Xamarin iOS?

Большое спасибо, Уилл.

P.S. Мы готовы изменить версию EFCore/Xamarin.iOS/Mono для решения проблемы.


person William Gilmour    schedule 09.08.2017    source источник
comment
Возможно, вы сталкиваетесь с этим github.com/aspnet/EntityFramework/issues/9249.   -  person Smit    schedule 10.08.2017
comment
Это также похоже на bugzilla.xamarin.com/show_bug.cgi?id=58424 Эта проблема является блокирующим моментом для нашего проекта.   -  person TomTom    schedule 10.08.2017
comment
Да, я нашел эти две проблемы вчера после публикации. В настоящее время это обсуждается на Xamarin Bugzilla.   -  person William Gilmour    schedule 11.08.2017


Ответы (1)


Это известная проблема. У iOS есть некоторые ограничения на дженерики, значения nullable... потому что Apple запрещает генерацию кода во время выполнения.

Эта проблема упоминается в github для платформы сущностей: Xamarin iOS: сбой при добавлении строки в таблицу с нулевым значением тип или с большим количеством столбцов

И на Xamarin bugzilla: Ошибка 58424 — Xamarin iOS: сбой EF Core при добавлении строки в таблицу с типом, допускающим значение NULL, или с большим количеством столбцов

person Guillaume    schedule 29.08.2017