2012-08-11 24 views
8

मैं EF5 आर सी में एक डेटा संदर्भ इस के समान बनाने की कोशिश की:एक ही प्रकार के एकाधिक वस्तु सेट

class WordContext : DbContext { 
    public DbSet<Word> PossibleWords { get; set; } 
    public DbSet<Word> UsedWords { get; set; } 
} 

जब मैं डेटाबेस अद्यतन करने की कोशिश की, मैं एक अपवाद कह प्राप्त किया: एकाधिक वस्तु सेट प्रति प्रकार समर्थित नहीं हैं। ऑब्जेक्ट 'संभावित शब्द' और 'प्रयुक्त शब्द' सेट करता है, दोनों में 'TestProject.Word' प्रकार के उदाहरण हो सकते हैं।

कुछ Googling के बाद, ऐसा लगता है कि इस तरह एक डेटा संदर्भ की संरचना नहीं वास्तव में एफई में संभव है।

मेरा प्रश्न है: क्या इस तरह डाटा स्टोर करने के लिए एक अच्छा कोड-पहली डिजाइन है?

मुझे लगता है कि एक छोटी सी एक तरह कुछ हो सकता है:

class WordContext : DbContext { 
    public DbSet<Words> Words { get; set; } 
} 

class Words { 
    public int ID { get; set; } 
    public IList<string> PossibleWords { get; set; } 
    public IList<string> UsedWords { get; set; } 
} 

लेकिन यह सिर्फ भयानक महसूस करता है।

संपादित करें: बेशक, एक और तुच्छ एक

वर्ग PossibleWord {...} वर्ग BannedWord {...}

वास्तव में, अब है कि मैं की तरह, 2 अलग पद प्रकार का उपयोग किया जाएगा यह नीचे लिखा यह भी, कि बुरा नहीं दिखता है हम्म ...

EDIT2:

शायद ज़रुरत पड़े किसी और इस में भी चलाता है, मैं दिखाता हूँ कि यह कैसे अंत में हल किया गया था:

class Word { 
    [Key] 
    public string String { get; set; } 
} 
class PossibleWord : Word { } 
class UsedWord : Word { } 

class WordContext : DbContext { 
    public DbSet<PossibleWord> PossibleWords { get; set; } 
    public DbSet<UsedWord> UsedWords { get; set; } 
} 
+2

आपके द्वारा उपयोग किए जाने वाले कार्यों का उल्लेख करने के लिए धन्यवाद। –

उत्तर

7

मुमकिन है आप अपने मूल कोड में 2 अलग-अलग तालिकाओं का प्रतिनिधित्व करने की कोशिश कर रहे हैं। मैं दो वर्गों, प्रयुक्त वर्ड और संभावित वर्ड पर विचार करता हूं, और बस उनमें से दोनों एक सामान्य इंटरफ़ेस को लागू करते हैं, कहें: IWord? या सरल, शब्द पर एक बूल "IsUsed" फ़ील्ड है, और एक टेबल/प्रकार है।

+0

हाहा हाँ, निंजा। जब तक मैंने इसे लिखा नहीं, तब तक किसी ने मुझे सही नहीं देखा। मुझे 8 मिनट तक अपना जवाब स्वीकार नहीं करने देगा। बहुत बहुत धन्यवाद :] – user974608

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