ค่า Nullables ใน Entity Framework Core บน Xamarin iOS

เรากำลังพัฒนาแอปบนมือถือโดยใช้ Xamarin.Forms ซึ่งได้รับการสนับสนุนโดยเว็บแอปโดยใช้ ASP.NET Core เราโหลดโมเดลต่างๆ จากฐานข้อมูลทั้งบนเว็บและแอปบนมือถือ และเมื่อเร็วๆ นี้ เราได้เปลี่ยนไปใช้ EntityFramework Core (จะเรียกว่า EFCore) บนเว็บแอป

ขณะนี้เรากำลังพิจารณาที่จะเปลี่ยนแอพมือถือไปใช้ EFCore เพื่อให้เราสามารถแชร์โค้ดระหว่างแอพได้มากขึ้น แต่ประสบปัญหากับ EFCore บน iOS ดูเหมือนว่าสามารถคอมไพล์และรันได้ และสามารถโหลดโมเดลธรรมดาได้ แต่ล้มเหลวในการโหลดประเภท nullable ซึ่งใช้เพื่อระบุความสัมพันธ์เพิ่มเติมระหว่างโมเดล ดูเหมือนว่าบุคคลนี้จะมี EFCore ทำงานใน iOS และมีโปรเจ็กต์สำหรับโค้ด . ฉันได้ดึงและรันโปรเจ็กต์ด้วยตัวเองเพื่อตรวจสอบว่ามันใช้งานได้ ซึ่งมันได้ผล แต่หลังจากเพิ่มความสัมพันธ์ที่เป็นโมฆะให้กับโมเดลอย่างง่ายของเขา ต่อมาก็ล้มเหลวทั้งในการโหลดและสร้างรายการโดยมีข้อผิดพลาดนี้:

System.ExecutionEngineException: กำลังพยายามคอมไพล์ JIT วิธีการ '(wrapper รันไทม์เรียกใช้) :runtime_inurge_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 หรือไม่

ขอบคุณมากวิล

ป.ล. เราเปิดให้เปลี่ยนเวอร์ชัน 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 มีข้อจำกัดบางประการเกี่ยวกับยาสามัญ, nullables... เนื่องจาก Apple ไม่อนุญาตให้สร้างโค้ดขณะรันไทม์

ปัญหานี้อ้างอิงบน github สำหรับเฟรมเวิร์กเอนทิตี: Xamarin iOS: ขัดข้องเมื่อฉันเพิ่มแถวลงในตารางที่มีค่าว่าง พิมพ์หรือมีคอลัมน์จำนวนมาก

และใน bugzilla ของ Xamarin : Bug 58424 - Xamarin iOS : EF Core หยุดทำงานเมื่อฉันเพิ่มแถวลงในตาราง ด้วยประเภทที่เป็นโมฆะหรือมีคอลัมน์จำนวนมาก

person Guillaume    schedule 29.08.2017