C# 在实体框架内测试连接字符串是否存在不正确的密码

C# 在实体框架内测试连接字符串是否存在不正确的密码,c#,entity-framework,database-connection,C#,Entity Framework,Database Connection,我是实体框架的初学者(代码优先),我必须修改应用程序 我有一个从DbContext继承的上下文类。在构造函数中,我传递connectionString 代码示例(不是我的): 但我不明白连接是在哪里完成的。如果connectionString中提供的密码错误,我希望捕获错误,然后尝试使用其他密码连接,并在连接到数据库时捕获事件 我该怎么做?我想你是在问,我该如何检测连接字符串是否有效。 具有一个名为的属性,可用于检索框架将使用的连接实体。然后,您可以调用测试连接本身。如何检查上下文的连接字符串取

我是实体框架的初学者(代码优先),我必须修改应用程序

我有一个从DbContext继承的上下文类。在构造函数中,我传递connectionString

代码示例(不是我的):

但我不明白连接是在哪里完成的。如果connectionString中提供的密码错误,我希望捕获错误,然后尝试使用其他密码连接,并在连接到数据库时捕获事件


我该怎么做?

我想你是在问,
我该如何检测连接字符串是否有效。


具有一个名为的属性,可用于检索框架将使用的连接实体。然后,您可以调用测试连接本身。

如何检查上下文的连接字符串取决于您使用的EF版本

//Entity Framework 5
myContext.Database.Connection.ConnectionString
//Entity Framework 6
myContext.Database.Connection.ConnectionString
//Entity Framework Core 1
myContext.Database.GetDbConnection().ConnectionString

看看我写的这篇博文-

试试看怎么样?是的,但是在哪里?我找不到连接在哪里。对不起,如果这个问题是愚蠢的!谢谢你的回答!到数据库的连接实际上在哪里完成?在创建上下文时是自动的吗?我可以简单地在某个地方添加一个Try/Catch吗?我相信您的意思是:在代码中,与数据库的连接在哪里打开。这很可能是EF的深层次,据我所知,没有像
ConnectionOpening
ConnectionOpened
这样的事件可以订阅。这是自动完成的,我不相信您可以轻松地在打开连接的每一行EF代码中添加一个try/catch。好的,thx,当调用Open()并出现错误时,有没有办法在运行时更改connectionString?(我想更改密码并重试)我不确定,但由于这是一个不同且有用的问题,我建议搜索StackOverflow,如果您没有找到答案,请将其作为另一个问题提问。
//Entity Framework 5
myContext.Database.Connection.ConnectionString
//Entity Framework 6
myContext.Database.Connection.ConnectionString
//Entity Framework Core 1
myContext.Database.GetDbConnection().ConnectionString