linq to sql + ستاكوفيرفلوو استثناء عند الاستعلام عن الكائنات

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

سؤال

حسنا ، لقد أكدت أنا فقط هذه المشكلة عند محاولة الاستعلام عن المفتاح الأساسي إذا كان هذا المفتاح الرئيسي في الكيان هو مجموعة 'السيارات ولدت قيمة' -- ولكن w/o هذا, كيف يمكنني إدراج?آسف إذا كان هذا هو مستجد linq2sql ولكن أنا فقط بدأت العمل معه.

كيف دفعة واحدة حول استخدام Linq to Sql مع إيقاف تشغيل هذا الخيار ولكن أيضا db التعامل مع pk ؟ أنا أكره أن qry في كل مرة للحصول على pk يجب تعيين...

آمل شخص يمكن أن تساعد لي ، أنا غير قادر تماما على استخدام linq to sql في واحدة من بلدي مشاريع لست متأكدا حقا ما يجب القيام به...هنا هو مثال على هذا الخط يلقي ستاكوفيرفلوو استثناء.

MyDataContext dc = new MyDataContext(ConnStr);
var obj = dc.MyDataTable.AsQueryable().SingleOrDefault(a => a.pkID == 4);

- أن السطر الثاني يلقي ستاكوفيرفلوو استثناء.

ها هو مثال آخر باستخدام نفس datacontext

var o = dc.MyDataTable.Take(1); <-- works fine
var abc = o.ToArray();  <-- unable to evaluate, debugger stops

أي أفكار أو ما يمكن أن أحاول ؟ لا يبدو أن يكون على ما يرام باستخدام linq to sql في مشروع آخر في نفس الحل.

-- تحديث-- نسيت أن أذكر أن هذا الكيان 'MyDataTable' لديه pk تعيين 'السيارات ولدت قيمة' -- هو أن هذه القضية يجب sql القيام السيارات الاضافة وهذا هو عمود هوية.

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

المحلول

وكيف يتم pkID تنفيذها؟ أي فرصة انها متكررة في بعض الطريق؟

نصائح أخرى

على Take(1) العامل لا يفاجئني ، كما أن هذا لا حقا تنفيذ أي شيء (هو تأجيل البيانات يتحرك).

وهذا هو مشكلة مثيرة للاهتمام - ليس أقلها SingleOrDefault(x=>x.ID == id) في الواقع معالجة مختلفة داخليا - أنه يقر هذا النحو الأساسي-مفتاح البحث و التحقق من هوية مدير أولا.

تحرير باعتبارها خارج الجدار شيء ، في محاولة .Where(x=>x.ID == id).SingleOrDefault() - كما في علة (الرابط السابق) ، هذا لا استخدم هوية بحث خدعة حتى 4.0 السفن.

وأود أن تبدأ من خلال أتساءل:

  • هل هناك أي شيء غريب في معرف جالبة/واضع (أضفت الكود؟)
    • فعلت أي شيء في فئة جزئية عن هذا النوع ؟
  • هو جزء من الميراث السلسلة ؟
    • وإذا كان الأمر كذلك ، هل monkeyed مع فئة جزئية على الوالد النوع ؟
  • لا يمكنك الحصول على أي شيء في استدعاء المكدس النافذة عندما ينفجر ؟

وكانت تلك الأخطاء تصحيحه في LINQ 4.0

HTTP: // damieng كوم / بلوق / 2009/06/01 / LINQ إلى SQL-التغيرات في صافي 40

<اقتباس فقرة>   

والاستقرار استعلام يحتوي الآن بالكشف عن IQueryable ولا يسبب تجاوز سعة مكدس ذاتية المرجعية

في .NET Framework 3.5 لحل المشكلة: عند استخدام 'السيارات لدت القيمة' = صحيح، ثم يجب عليك تعيين "تأخير تحميل" إلى خطأ - على خلاف ذلك تحصل على خطأ العودية

وDataTable والخاص بك هو كبير جدا!

وتحرير. هل حقا MyDataTable DataTable و؟ أم أنها في الواقع LINQ إلى SQL الجدول <...>؟ إذا كان الأمر كذلك، إزالة AsQueryable ().

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