LINQ से SQL lazy loading व्यक्तिगत गुणों का समर्थन करता है। डीबीएमएल डिजाइनर में, आप कॉलम के गुणों में Delay Loaded
true
पर सेट कर सकते हैं। लोड किए गए विलंब कॉलम प्रारंभिक SELECT
में शामिल नहीं किए जाएंगे। यदि आप ऑब्जेक्ट की संपत्ति तक पहुंचने का प्रयास करते हैं और इसे अभी तक लोड नहीं किया गया है, तो यह मान डीबी से लाने के लिए अन्य SELECT
कथन निष्पादित किया जाएगा।
यदि आप हाथ से डीबीएमएल फ़ाइल संपादित कर रहे हैं, तो <Column IsDelayLoaded="true">
सेट करें। यदि आप अपने LINQ को SQL कक्षाओं में हाथ से लिख रहे हैं, तो T
के बजाय Link<T>
के रूप में संपत्ति के बैकिंग फ़ील्ड को घोषित करना उतना ही आसान है। उदाहरण के लिए:
[Table]
public class Person
{
private Link<string> _name;
[Column(Storage = "_name")]
public string Name
{
get { return _name.Value; }
set { _name.Value = value; }
}
}
भी देखें this post by Scott Guthrie में "देरी/लेज़ी लोड हो रहा है" खंड।
अद्यतन: उपर्युक्त उत्तर लागू होता है यदि आप चाहते हैं कि कॉलम अभी भी उपलब्ध हो। इसे SELECT
में शामिल नहीं किया जाएगा जबतक कि आप इसे विशेष रूप से नहीं पूछते (देखें LoadOptions
) या इसे एक्सेस करने का प्रयास करें।
यदि आप कॉलम का उपयोग या उपयोग नहीं करना चाहते हैं, और आप इसे कक्षा संपत्ति के रूप में उपलब्ध नहीं करना चाहते हैं, तो डीबीएमएल फ़ाइल से कॉलम को हटाने के Serapth's answer के साथ जाएं। सुनिश्चित करें कि आप उस कॉलम पर समवर्ती जांच की हानि जैसे प्रभावों को समझते हैं।
आप कर रहे हैं सही है, तो आप एक के बजाय एक "नाम" वर्ग का उपयोग कर सकते गुमनाम वर्ग, लेकिन आप अभी भी "प्रत्येक लौटा क्षेत्र अलग-अलग निर्दिष्ट करें", जिसे आपने अपने प्रश्न में कहा था कि आप नहीं करना चाहते थे: पी – Lucas