LINQ إلى SQL - Nullable INT في ExternalKey = "لا يمكن إنشاء اقتران..."
-
08-07-2019 - |
سؤال
لدي جدول يحتوي على مفتاح أساسي وهو INT ...لدي جدول آخر، له علاقة مفتاح خارجي بالجدول الأول، ولكنه INT NULLABLE.
هذا أمر جيد تمامًا ومقبول بنسبة 100٪ لـ SQL ...ومع ذلك، فإن LINQ to SQL يشكو من الأنواع غير المتطابقة ("int to Nullable[int]").
رسالة خطأ:لا يمكن إنشاء اقتران "Store_People".لا تحتوي الخصائص على أنواع مطابقة:"معرف الشخص"، "المعرف".
كيف يمكنني حل هذه المشكلة حتى يتوقف المصمم عن الصراخ عند الاستخدام الصحيح بنسبة 100٪ لـ SQL؟
المحلول
وإليك ما رميت معا. العمود Table1Id Table2 هو مفتاح خارجي nullable لTABLE1. حتى أنا ألقى في عدد قليل من سجلات البيانات واختبار بعض الاستفسارات ينق ...
تحرير م>: منذ أن كنت اتلقى بعض downvotes (على ما يبدو) لكسر الصلة لأن هذا السؤال هو 6 سنوات والمضيف كنت لم نجا ... وهنا نسخة محدثة.
نصائح أخرى
ولقد وجدت هذه المشكلة. يمكنك إنشاء جمعية فقط إذا لم يكن لدى الفئة الأصل في حقل nullable كمفتاح.
وهكذا، وهذا:
وسوف يسبب هذا الخطأ:
و... ولكن هذا:
وستعمل تماما.
وهذا يبدو وكأنه علة (أو على الأقل، وهو غباء LINQ إلى SQL) ... ولكن أنا أحب هو بخلاف ذلك.
لدي هذا الوضع بالضبط في DBML الآن، وهو يعمل بشكل جيد.
المفتاح الأساسي
- لاغية - خطأ
- المفتاح الأساسي - صحيح
- نوع بيانات الخادم - int NOT NULL IDENTITY
- النوع - int (System.Int32)
مفتاح غريب
- لاغية - صحيح
- المفتاح الأساسي - خطأ
- نوع بيانات الخادم - Int
- النوع - int (System.Int32) (يتم تعريفه فعليًا على أنه Nullable في ملف context.designer.cs)