Linq To SQL:يمكن أنا حريصة تحميل حقل واحد فقط في انضم الطاولة ؟

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

سؤال

أنا واحد الجدول "أوامر" مع foreing الرئيسية "ProductID".

أريد أن إظهار أوامر في الشبكة مع اسم المنتج, دون LazyLoad للحصول على أداء أفضل, لكن إذا كان استخدام DataLoadOptions فإنه يسترد كل المنتج من الحقول التي طبقات مثل مبالغة.

هل هناك طريقة لاسترجاع فقط اسم المنتج في الاستعلام الأول?يمكن تعيين بعض السمة في DBML?

في هذا الجدول يقول أن "الخارجية القيم الأساسية" هي "مرئية" في Linq To SQL, ولكن لا أعرف ماذا يعني هذا.

تحرير:غيرت العنوان لأني لست متأكدا من أنه لا يوجد حل.
لا أصدق أن لا أحد لديه نفس المشكلة, وهو شائع جدا في السيناريو.

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

المحلول 3

أحصل على الحل في هذا السؤال التي .صافي ORM يمكن التعامل مع هذا السيناريو, هذا هو ذات الصلة liammclennan الجواب ولكن أكثر وضوحا (ربما كان السؤال أكثر وضوحا أيضا)

نصائح أخرى

ما كنت تسأل عنه هو المستوى الأمثل ينق إلى sql لا تقدم.أعتقد أن أفضل رهان هو أن إنشاء استعلام بإرجاع بالضبط البيانات التي تريد وربما مجهول النوع:

from order in DB.GetTable<Orders>()
join product in DB.GetTable<Products>()
on order.ProductID = product.ID
select new { ID = order.ID, Name = order.Name, ProductName = product.Name };

إذا كنت فقط تحديد الأعمدة التي تريدها في استعلام linq ، ومن ثم استدعاء .ToList() على الاستعلام سيكون immedietly تنفيذها و سوف يعود الأعمدة كنت مهتما في.على سبيل المثال إذا كنت تفعل هذا:

var q = from p in dataContext.products select p.ProductName;
var results = q.ToList();

سوف تحصل على قائمة من أسماء المنتجات المخزنة في النتائج عند تنفيذ الاستعلام على الخادم فقط اعادة المنتج العمود.

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