如何使用Entity Framework Database First获取数据库信息?

7
当我使用Entity Framework codefirst时,我可以使用以下代码获取我的数据库连接字符串:
var db = new dbContext();
Console.Writeline(db.Database.Connection.ConnectionString);

但是当我使用数据库优先时,数据库不可用。在运行时,我该如何获取Entity Framework正在使用的数据库连接字符串?

2个回答

12

代码:

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

这总是有效的。因此,如果您从数据库创建实体模型并使用了DbContext生成器T4模板,则仍然可以使用它。

如果您使用的是ObjectContext API,则必须调用以下方法:

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

我以前从未找到过这个解决方案,所以我通常会解析查询字符串(它并不是那么难以发现;-))。这大大改善了我的代码,谢谢! - Tillito

10

...而具体的连接字符串属性可以被暴露出来:

using System.Data.SqlClient;



    internal static string GetDatabaseName()
    {
        using (var _db = new MyProjectEntities())
        {
            return new SqlConnectionStringBuilder(_db.Database.Connection.ConnectionString).InitialCatalog;
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接