我们正在使用 Xamarin.Forms 开发移动应用,该应用由使用 ASP.NET Core 的 Web 应用提供支持。我们在 Web 和移动应用程序上从数据库加载各种模型,最近我们已经过渡到在 Web 应用程序上使用 EntityFramework Core(将称为 EFCore)。
我们目前正在考虑将移动应用程序转换为也使用 EFCore 以允许我们在应用程序之间共享更多代码,但在 iOS 上遇到了 EFCore 问题。它似乎可以编译运行,并且可以加载简单模型,但无法加载用于指定模型之间可选关系的可空类型。这个人好像有EFCore running in iOS并提供一个 project对于他们的代码。我自己拉动并运行了该项目以检查它是否正常工作,确实如此,但是在向他的简单模型添加了一个可为空的关系之后,它随后无法加载和创建一个项目,并出现此错误:
System.ExecutionEngineException: Attempting to JIT compile method '(wrapper runtime-invoke) :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)' while running in aot-only mode. See https://developer.xamarin.com/guides/ios/advanced_topics/limitations/ for more information.
在模拟器上运行不会出现这个错误,只会在设备上出现。
我的问题是,是否有人成功让 Nullables 在 Xamarin iOS 上与 EFCore 一起工作?
非常感谢,威尔。
附言我们愿意更改 EFCore/Xamarin.iOS/Mono 版本来解决问题。
最佳答案
这是一个已知问题。 iOS 对泛型、可空值有一些限制……因为 Apple 不允许在运行时生成代码。
该问题在 Entity Framework 的 github 上被引用:Xamarin iOS : Crash when i add row to table with nullable type or with a lot of columns
在 Xamarin 的 bugzilla 上:Bug 58424 - Xamarin iOS : EF Core crash when I add row to table with nullable type or with a lot of columns
关于c# - Xamarin iOS 上 Entity Framework Core 中的可空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45592816/