كيفية التعامل مع المفاتيح "الثانوية" في Entity Framework

StackOverflow https://stackoverflow.com/questions/637877

سؤال

أقوم بتقييم استخدام EF مقابل مخطط موجود - المشكلة هي أنني لا أستطيع معرفة كيفية إعداد الارتباطات بين الجداول حيث لا يكون المفتاح الخارجي هو المفتاح الأساسي للجدول الرئيسي.

على سبيل المثال، أ foo قد يكون هناك الكثير bars كما هو محدد على هذا النحو (سامح الرمز الكاذب):

table foo {
  int foo\_id pk,
  char(10) foo\_code,
  ...
}

table foobar {
  int bar\_id pk,
  char(10) bar\_foo\_code fk(foo.foo\_code),
  ...
}

ما الذي أفتقده حتى أتمكن من إنشاء foo_foobar الرابطة، وبالتالي أ Bars خاصية الملاحة على Foo كيان؟

هل كانت مفيدة؟

المحلول

لا يدعم Linq to الكيانات المفاتيح الخارجية التي لا تشير إلى المفتاح الأساسي للجدول (راجع رسالة السجل 3).سوف يتعامل Linq to الكيانات معه كحقل عادي على الجدول.لن تتمكن من الانتقال إلى الكيان المرتبط به.

إذا كان لديك مخطط موجود فإنني أوصي باستخدام مولد إدم حيث سيؤدي ذلك إلى إنشاء ملف EMDX والرمز الموجود خلفه وحتى رمز العرض (الذي يمكن أن يكون كبيرًا جدًا).إذا كان مخططك الحالي كبيرًا جدًا، فراجع هذا بريد, والذي يشرح كيفية التعامل مع المخططات الكبيرة.

عند تشغيل EDM Generator، ستكتشف كل الأشياء غير المدعومة.

بالنظر إلى سجل EDMGen2.exe السابق، حصلنا على الأنواع التالية من الرسائل:

  1. نوع البيانات "sql_variant" ليس كذلك
    مدعوم ، تم استبعاد العمود "ColumnName" في الجدول "Tablename".
  2. الجدول / العرض "tableName" لا لديك مفتاح أساسي محدد.المفتاح تم الاستدلال عليه والتعريف تم إنشاؤه كجدول/طريقة عرض للقراءة فقط
  3. العلاقة 'اسم العلاقة' يحتوي على أعمدة ليست جزءا من مفتاح الجدول على الجانب الأساسي من العلاقة وهو غير مدعوم ، فإن تم استبعاد العلاقة.

لقد وجدنا أيضًا أن مشروع Linq قد تعطل بالفعل Visual Studio كثيرًا نظرًا لأن ملف التعليمات البرمجية الذي تم إنتاجه بواسطة EDM كان أكبر من 80 ميجابايت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top