5

जब मैं इकाई की रूपरेखा का उपयोग codefirst मैं अपने डेटाबेस कनेक्शन स्ट्रिंग प्राप्त करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं:पहले इकाईफ्रेमवर्क डेटाबेस के साथ डेटाबेस जानकारी कैसे प्राप्त करें?

var db = new dbContext(); 
Console.Writeline(db.Database.Connection.ConnectionString); 

लेकिन जब मैं पहली डेटाबेस करते हैं, डाटाबेस उपलब्ध नहीं है। मैं (रनटाइम पर कोड से) डेटाबेस फ्रेम स्ट्रिंग प्राप्त करने के बारे में कैसे जा सकता हूं जिसका उपयोग इकाई ढांचे द्वारा किया जा रहा है?

उत्तर

12

कोड: हमेशा

var db = new dbContext(); 
Console.Writeline(db.Database.Connection.ConnectionString); 

काम करता है। तो यदि आपने अपने डेटाबेस से इकाई मॉडल बनाया है और डीबीकॉन्टेक्स्ट जनरेटर टी 4 टेम्पलेट का उपयोग किया है तो भी आप इसका उपयोग कर सकते हैं।

आप के बजाय ObjectContext एपीआई का उपयोग किया है तो आप इस कॉल करना होगा:

var connection = context.Connection as EntityConnection; 
if (connection == null) throw new ...; 
var storeConnectionString = connection.StoreConnection.ConnectionString; 
+0

मैं कभी नहीं इस समाधान तो मैं इस्तेमाल किया पाया क्वेरीस्ट्रिंग को पार्स करने के लिए (जो कि अच्छी तरह छुपा नहीं है ;-))। यह मेरे कोड में बहुत सुधार हुआ, धन्यवाद! – Tillito

8

... और विशिष्ट कनेक्शन स्ट्रिंग गुण तो अवगत कराया जा सकता है:

using System.Data.SqlClient; 



    internal static string GetDatabaseName() 
    { 
     using (var _db = new MyProjectEntities()) 
     { 
      return new SqlConnectionStringBuilder(_db.Database.Connection.ConnectionString).InitialCatalog; 
     } 
    } 
संबंधित मुद्दे