Extract connection string from an Entity Connection String

前端 未结 5 570
没有蜡笔的小新
没有蜡笔的小新 2021-02-05 09:50

When creating and ADO.NET Entity Connection String you get something like



        
相关标签:
5条回答
  • 2021-02-05 10:00

    We can use the following code to extract connection string only from entity framework connection string without metadata information.

    string connectionString = new MREntities().Database.Connection.ConnectionString
    
    0 讨论(0)
  • 2021-02-05 10:08

    Assuming you have an instance of the ObjectContext (if you are using the built-in designer, your context derives from the EF ObjectContext class). You can cast the value of the ObjectContext.Connection property (which is a DbConnection) to an EntityConnection.

    The EntityConnection class has a property StoreConnection which is the actual DbConnection used to connect to the database. This one actually has the ConnectionString property set to the one you are looking for.

    Edit: Some sample code (Assign context to your ObjectContext):

    ObjectContext context = entities;
    EntityConnection entityConnection = context.Connection as EntityConnection;
    if (null != entityConnection)
    {
        Console.WriteLine(entityConnection.StoreConnection.ConnectionString);
    }
    
    0 讨论(0)
  • 2021-02-05 10:15

    You don't need to create instance of ObjectContext. Because in that case you must reference assemblies where metadata are stored and for performance is not also very good.

    There is simpler way to get provider connection string in StoreConnection property.

     using (var ec = new EntityConnection(connstr.ConnectionString))
     {
       var sqlConn = ec.StoreConnection as SqlConnection;
       sqlConn.Open();
     }
    
    0 讨论(0)
  • 2021-02-05 10:19

    While Jan Remunda rightly points out that you don't need to create a context, and while his solution is useful if you want to create a connection explicitly right after reading the EntityClient connection string, it's still a little convoluted if all you want is to retrieve the inner-provider connection string (which is what OP asks).

    It's true that you don't have to open the connection, you can just retrieve the ConnectionString of the inner StoreConnection then discard it right after, but why?

    Use the appropriate connection string builder instead:

    new EntityConnectionStringBuilder(outerConnectionString).ProviderConnectionString
    

    See EntityConnectionStringBuilder.

    0 讨论(0)
  • 2021-02-05 10:26

    try this :

    conn = ConfigurationManager.ConnectionStrings["MREntities"].ConnectionString;
    
    0 讨论(0)
提交回复
热议问题