尝试使用指向ODBC DSN的连接字符串时出现不支持关键字的异常

本文关键字:字符串 不支持 异常 关键字 连接 DSN ODBC | 更新日期: 2023-09-27 18:00:56

我为Asp.NetMVC应用程序的数据库访问创建了一个ODBC DSN。其中一个主要原因是,它可以很容易地将数据库凭据(如服务器地址、端口、用户名和密码(置于源代码控制之外,而不会妨碍我的发布能力。

所以我将连接更改为DSN=MyDSN

不幸的是,当我运行实体框架查询时,我得到了Exception Details: System.ArgumentException: Keyword not supported: 'dsn'.

有人知道我做错了什么吗?

尝试使用指向ODBC DSN的连接字符串时出现不支持关键字的异常

如果要使用ODBC DSN,则连接字符串必须使用System.Data.Odbc本机提供程序,而不是托管SQL客户端。

编辑:

所以现在从理论到实践。由于内部EF的实施,它不起作用。EF内部调用一些方法,该方法试图从创建的连接中获取DbProviderFactory。问题是这个属性是在DbConnection中定义的,它返回null。只有SqlConnection重写属性并返回正确的工厂。所以EF不适用于默认的ODBC提供程序,这里非常清楚地描述了原因。