c# - How do I select correct DbSet in DbContext based on table name -


मेरे पास निम्न DbSets के साथ एक DbContext है

  वर्ग अमीरात: DbContext {सार्वजनिक DbSet & lt ; कुत्ता & gt; कुत्तों {प्राप्त; सेट; } सार्वजनिक डीबीसेट & lt; कैट & gt; बिल्लियों {प्राप्त करें; सेट; }}   

प्रत्येक EntityTypeConfiguration के अंदर मैं प्रत्येक DbSet जैसे टेबल के लिए परिभाषित कर रहा हूँ

  class DogConfig: EntityTypeConfiguration {public DogConfig () {this.ToTable ( "DOG_TABLE"); ...}}   

अब, अगर मेरे पास टेबल का नाम है और डीबीसीटीएक्सटेक्स्ट है, तो मैं सही डब्सैट कैसे प्राप्त कर सकता हूं?

  void foo () {String tableName = this.GetTableName (); (पशु संदर्भ = नया जानवर ()) का उपयोग कर {/ * मेड समाधान * / डीबीसेट पशु कान्टेक्सेट = संदर्भ। कहाँ (सी = & gt; c.TableName == टेबलनाम); ... / * DbSet * / ...}}    

के साथ कुछ करो DbContext से प्रकार द्वारा विधि DbContext.Set (प्रकार एंटाइटाइप) का उपयोग करके डीबीसेट प्राप्त कर सकते हैं । इसलिए यदि आपके पास मॉडल वर्ग के नाम को स्ट्रिंग के रूप में है, तो आपको वास्तविक क्लाआर प्रकार के कुछ मैपिंग करना चाहिए। उदाहरण के लिए:

  string tableName = "cat"; Var प्रकार = विधानसभा.गेट एक्सीडिंगआसम्बैंड ()। गेटटाइप ()। फर्स्टऑर डीफॉल्ट (टी = & gt; टी.नाम == टेबलनाम); अगर (प्रकार! = नल) डीबीसेट कैटिकांटेक्स = संदर्भ .सेट (प्रकार);   

आप पूर्ण विधानसभा के योग्य टाइप प्रकार। गेट टाइप ('...') का उपयोग करके भी स्ट्रिंग से प्रकार प्राप्त कर सकते हैं

यदि आप कॉन्फ़िगरेशन स्टोर कर सकते हैं किसी भी तरह सामान्य तरीके से और सामान्य संदर्भ का उपयोग करें .सेट & lt; T & gt; () विधि।

Comments

Popular posts from this blog

Out of index C/C++ -

regex - PatternSyntaxException: while using String.ReplaceAll function in java? -

java - Projects which are accessed via multiple (different) IDEs: Ant or Maven? -