2010-04-14 8 views
6

आइए कहें कि मेरे पास टीम कक्षा है जिसमें 0 या अधिकखिलाड़ी हैं।एंटिटी फ्रेमवर्क 4 में किसी पीओसीओ में संग्रह को परिभाषित करने के लिए कैसे?

प्लेयर वर्ग आसान है:

public class Player 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public Team Team { get; set; } 
} 

लेकिन सबसे अच्छा क्या टीम वर्ग को परिभाषित करने के लिए?

विकल्प 1

public class Team 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public ICollection<Player> Players { get; set; } 
} 

विकल्प 2:

public class Team 
{ 
    public Team() 
    { 
     Players = new Collection<Player>(); 
    } 

    public long Id { get; set; } 
    public string Name { get; set; } 
    public ICollection<Player> Players { get; set; } 
} 

विकल्प 3:

public class Team 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public IQueryable<Player> Players { get; set; } 
} 

विकल्प 4:

public class Team 
{ 
    public long Id { get; set; } 
    public string Name { get; set; } 
    public ObjectSet<Player> Players { get; set; } 
} 

उत्तर

7

पहले, आइए अस्वीकार्य विकल्पों के साथ बांटना करते हैं। विकल्प 3 वास्तव में सही नहीं है; हम ऑब्जेक्ट स्पेस में हैं, LINQ से Entities space नहीं। विकल्प 4 सही नहीं है, या तो; ObjectSetObjectContext पर उपयोग के लिए है, पीओसीओ प्रकार पर नहीं।

जो 1 और 2 छोड़ देता है। वे दोनों सही तरीके से काम करेंगे। यदि आप नहीं चुनते हैं तो डेटाबेस से संबंधित उदाहरणों को पूरा करते समय इकाई फ्रेमवर्क संग्रह को प्रारंभ करेगा। हालांकि, विकल्प 2 का लाभ यह है कि आप डेटाबेस को सहेजने और इसे वापस पढ़ने से पहले अपने स्वयं के कोड में एक नया Team का उपयोग कर सकते हैं। तो मैं शायद वह एक चुनूँगा।

संबंधित मुद्दे