पर मैं ईएफ का उपयोग कर डेटाबेस से रिकॉर्ड प्राप्त करना चाहता हूं और मानों को एक डीटीओ कक्षा में असाइन करना चाहता हूं। लिंक क्वेरी के लिए निम्न तालिकाओं पर विचार करें।मैकिंग लिंक क्वेरी का परिणाम डीटीओ कक्षा
TableA, TableB, TableC
प्रत्येक TableA रिकॉर्ड के लिए वहाँ TableB में कई रिकॉर्ड कर रहे हैं। प्रत्येक टेबलबी रिकॉर्ड के लिए टेबलसी में कई रिकॉर्ड हैं। अब मेरी DTOs इस
public class TableA_DTO
{
public int tableA_rowid { get; set; }
//remaining tableA field definitions
public List<TableB_DTO> TableB_records { get; set; }
}
public class TableB_DTO
{
public int tableB_rowid { get; set; }
//remaining tableB field definitions
public List<TableC_DTO> TableC_records { get; set; }
}
public class TableC_DTO
{
public int tableC_rowid { get; set; }
//remaining tableC field definitions
}
मेरी LINQ क्वेरी की तरह लग रहे तो जैसे क्वेरी परिणाम में आइटम के माध्यम से इस
var qry = from ent in TableA
select ent;
मेरी मानचित्रण वर्ग मैं पाश में तरह दिखता है:
foreach (var dataitem in query)
{
TableA_DTO dto = new TableA_DTO();
dto.tableA_rowid = dataitem.ID;
//remaining field definitions here
}
अब यह TableA के सभी क्षेत्रों के लिए काम करता है जहां यह डेटाबेस से एक रिकॉर्ड लाता है और तालिका TableA में प्रत्येक फ़ील्ड के लिए TableA_DTO में आवश्यक गुण सेट करता है। मैं TableB_records नाम से tableA प्रॉपर्टी फ़ील्ड में टेबलबी में सभी मेलिंग रिकॉर्ड्स को भी पॉप्युलेट करना चाहता हूं और TableB_DTO में TableB_DTO की संपत्ति में टेबलसी से सभी मेल खाने वाले रिकॉर्ड्स को तालिकाC_records
क्या किया जा सकता है? मुझे बदलने की क्या ज़रूरत है? अर्थात यह LINQ क्वेरी या जिस तरह से मैं अपने मानचित्रण
अपने समय के लिए धन्यवाद करना ...
क्या कोई कारण है कि आप एंटिटी फ्रेमवर्क पीओसीओ (उर्फ डीबीकॉन्टेक्स्ट, कभी-कभी गलती से पहले कोड कहा जाता है) का उपयोग नहीं कर सकते हैं? असल में, क्या आप डीटीओ की आवश्यकता को खत्म कर सकते हैं और इसके बजाय ईएफ पॉको का उपयोग कर सकते हैं? – JMarsch
क्या आपने ऑटोमैपर का उपयोग करने पर विचार किया है? आपके डीटीओ कितने अलग हैं, इस पर निर्भर करते हुए, मैपिंग करने के लिए कोड की दो या तीन पंक्तियों जितनी सरल हो सकती है। – Robaticus
@jMarsch: डेटाबेस पहले से मौजूद है इसलिए edmx way – user20358